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