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