dr1301.cpp revision 5bdaac5454d93d1dcdc2319818497b685be56fcf
1// RUN: %clang_cc1 -std=c++11 -verify %s 2struct A { // expected-note 2{{candidate}} 3 A(int); // expected-note {{candidate}} 4 int n; 5}; 6int a = A().n; // expected-error {{no matching constructor}} 7 8struct B { 9 B() = delete; // expected-note 3{{here}} 10 int n; 11}; 12int b = B().n; // expected-error {{call to deleted}} 13 14struct C { 15 B b; // expected-note {{deleted default constructor}} 16}; 17int c = C().b.n; // expected-error {{call to implicitly-deleted default}} 18 19struct D { 20 D() = default; // expected-note {{here}} 21 B b; // expected-note {{'b' has a deleted default constructor}} 22}; 23int d = D().b.n; // expected-error {{call to implicitly-deleted default}} 24 25struct E { 26 E() = default; 27 int n; 28}; 29int e = E().n; // ok 30 31struct F { 32 F(); 33 int n; 34}; 35int f = F().n; // ok 36 37union G { 38 F f; // expected-note {{non-trivial default constructor}} 39}; 40int g = G().f.n; // expected-error {{call to implicitly-deleted default}} 41 42struct H { 43 int n; 44private: 45 H(); // expected-note {{here}} 46}; 47int h = H().n; // expected-error {{private constructor}} 48 49struct I { 50 H h; // expected-note {{inaccessible default constructor}} 51}; 52int i = I().h.n; // expected-error {{call to implicitly-deleted default}} 53 54struct J { 55 J(); 56 virtual int f(); 57 int n; 58}; 59int j1 = J().n; // ok 60int j2 = J().f(); // ok 61 62union K { 63 J j; // expected-note 2{{non-trivial default constructor}} 64 int m; 65}; 66int k1 = K().j.n; // expected-error {{call to implicitly-deleted default}} 67int k2 = K().j.f(); // expected-error {{call to implicitly-deleted default}} 68