p11.0x.copy.cpp revision e4e68d45f89ff4899d30cbd196603d09b7fbc150
15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct NonTrivial { 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NonTrivial(const NonTrivial&); 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)union DeletedNTVariant { // expected-note{{here}} 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NonTrivial NT; 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DeletedNTVariant(); 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)DeletedNTVariant DVa; 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)DeletedNTVariant DVb(DVa); // expected-error{{call to implicitly-deleted copy constructor}} 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct DeletedNTVariant2 { // expected-note{{here}} 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) union { 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NonTrivial NT; 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) }; 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DeletedNTVariant2(); 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)DeletedNTVariant2 DV2a; 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)DeletedNTVariant2 DV2b(DV2a); // expected-error{{call to implicitly-deleted copy constructor}} 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct NoAccess { 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NoAccess() = default; 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)private: 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NoAccess(const NoAccess&); 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) friend struct HasAccess; 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct HasNoAccess { // expected-note{{here}} 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NoAccess NA; 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)HasNoAccess HNAa; 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)HasNoAccess HNAb(HNAa); // expected-error{{call to implicitly-deleted copy constructor}} 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct HasAccess { 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NoAccess NA; 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)HasAccess HAa; 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)HasAccess HAb(HAa); 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct NonConst { 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NonConst(NonConst&); 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct Ambiguity { 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Ambiguity(const Ambiguity&); 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Ambiguity(volatile Ambiguity&); 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct IsAmbiguous { // expected-note{{here}} 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NonConst NC; 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Ambiguity A; 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) IsAmbiguous(); 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IsAmbiguous IAa; 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IsAmbiguous IAb(IAa); // expected-error{{call to implicitly-deleted copy constructor}} 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct Deleted { // expected-note{{here}} 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) IsAmbiguous IA; 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)Deleted Da; 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)Deleted Db(Da); // expected-error{{call to implicitly-deleted copy constructor}} 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct NoAccessDtor { 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)private: 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ~NoAccessDtor(); 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) friend struct HasAccessDtor; 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct HasNoAccessDtor { // expected-note{{here}} 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NoAccessDtor NAD; 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) HasNoAccessDtor(); 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ~HasNoAccessDtor(); 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)HasNoAccessDtor HNADa; 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)HasNoAccessDtor HNADb(HNADa); // expected-error{{call to implicitly-deleted copy constructor}} 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct HasAccessDtor { 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NoAccessDtor NAD; 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)HasAccessDtor HADa; 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)HasAccessDtor HADb(HADa); 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct RValue { // expected-note{{here}} 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int && ri = 1; 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)RValue RVa; 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)RValue RVb(RVa); // expected-error{{call to implicitly-deleted copy constructor}} 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)