blob: 402bc31d5eec9e43e128387d5e89813940331600 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
struct NonTrivial {
NonTrivial(NonTrivial&&);
};
union DeletedNTVariant {
NonTrivial NT;
DeletedNTVariant(DeletedNTVariant&&);
};
DeletedNTVariant::DeletedNTVariant(DeletedNTVariant&&) = default; // expected-error{{would delete}}
struct DeletedNTVariant2 {
union {
NonTrivial NT;
};
DeletedNTVariant2(DeletedNTVariant2&&);
};
DeletedNTVariant2::DeletedNTVariant2(DeletedNTVariant2&&) = default; // expected-error{{would delete}}
struct NoAccess {
NoAccess() = default;
private:
NoAccess(NoAccess&&);
friend struct HasAccess;
};
struct HasNoAccess {
NoAccess NA;
HasNoAccess(HasNoAccess&&);
};
HasNoAccess::HasNoAccess(HasNoAccess&&) = default; // expected-error{{would delete}}
struct HasAccess {
NoAccess NA;
HasAccess(HasAccess&&);
};
HasAccess::HasAccess(HasAccess&&) = default;
struct NoAccessDtor {
NoAccessDtor(NoAccessDtor&&);
private:
~NoAccessDtor();
friend struct HasAccessDtor;
};
struct HasNoAccessDtor {
NoAccessDtor NAD;
HasNoAccessDtor(HasNoAccessDtor&&);
};
HasNoAccessDtor::HasNoAccessDtor(HasNoAccessDtor&&) = default; // expected-error{{would delete}}
struct HasAccessDtor {
NoAccessDtor NAD;
HasAccessDtor(HasAccessDtor&&);
};
HasAccessDtor::HasAccessDtor(HasAccessDtor&&) = default;
struct RValue {
int &&ri = 1;
RValue(RValue&&);
};
RValue::RValue(RValue&&) = default;
struct CopyOnly {
CopyOnly(const CopyOnly&);
};
struct NonMove {
CopyOnly CO;
NonMove(NonMove&&);
};
NonMove::NonMove(NonMove&&) = default; // expected-error{{would delete}}
struct Moveable {
Moveable();
Moveable(Moveable&&);
};
struct HasMove {
Moveable M;
HasMove(HasMove&&);
};
HasMove::HasMove(HasMove&&) = default;
|