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)