1 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 2 3 struct NoDefault { 4 NoDefault() = delete; // expected-note {{here}} 5 NoDefault(int); 6 }; 7 struct Explicit { // expected-note 2 {{candidate}} expected-note {{here}} 8 explicit Explicit(int); 9 }; 10 struct NoCopy { 11 NoCopy(); 12 NoCopy(const NoCopy &) = delete; // expected-note {{here}} 13 }; 14 struct NoMove { 15 NoMove(); 16 NoMove(NoMove &&) = delete; // expected-note {{here}} 17 }; 18 class Private { 19 Private(int); // expected-note {{here}} 20 public: 21 Private(); 22 }; 23 class Friend { 24 friend class S; 25 Friend(int); 26 }; 27 28 29 class S { 30 NoDefault nd1; 31 NoDefault nd2 = 42; 32 Explicit e1; // expected-note {{here}} 33 Explicit e2 = 42; // expected-error {{no viable conversion}} 34 NoCopy nc = NoCopy(); // expected-error {{call to deleted}} 35 NoMove nm = NoMove(); // expected-error {{call to deleted}} 36 Private p = 42; // expected-error {{private constructor}} 37 Friend f = 42; 38 S()39 S() {} // expected-error {{call to deleted constructor of 'NoDefault'}} \ 40 expected-error {{must explicitly initialize the member 'e1' which does not have a default constructor}} S(int)41 S(int) : nd1(42), e1(42) {} 42 }; 43 44 // FIXME: test the other forms which use copy-initialization 45