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