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 
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}}
41   S(int) : nd1(42), e1(42) {}
42 };
43 
44 // FIXME: test the other forms which use copy-initialization
45