| // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s |
| |
| struct NoDefault { |
| NoDefault() = delete; // expected-note {{here}} |
| NoDefault(int); |
| }; |
| struct Explicit { // expected-note 2 {{candidate}} expected-note {{here}} |
| explicit Explicit(int); |
| }; |
| struct NoCopy { |
| NoCopy(); |
| NoCopy(const NoCopy &) = delete; // expected-note {{here}} |
| }; |
| struct NoMove { |
| NoMove(); |
| NoMove(NoMove &&) = delete; // expected-note {{here}} |
| }; |
| class Private { |
| Private(int); // expected-note {{here}} |
| public: |
| Private(); |
| }; |
| class Friend { |
| friend class S; |
| Friend(int); |
| }; |
| |
| |
| class S { |
| NoDefault nd1; |
| NoDefault nd2 = 42; |
| Explicit e1; // expected-note {{here}} |
| Explicit e2 = 42; // expected-error {{no viable conversion}} |
| NoCopy nc = NoCopy(); // expected-error {{call to deleted}} |
| NoMove nm = NoMove(); // expected-error {{call to deleted}} |
| Private p = 42; // expected-error {{private constructor}} |
| Friend f = 42; |
| |
| S() {} // expected-error {{call to deleted constructor of 'NoDefault'}} \ |
| expected-error {{must explicitly initialize the member 'e1' which does not have a default constructor}} |
| S(int) : nd1(42), e1(42) {} |
| }; |
| |
| // FIXME: test the other forms which use copy-initialization |