68 lines · cpp
1// RUN: %clang_cc1 -std=c++11 -verify %s2struct 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 4{{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}} expected-warning {{implicitly deleted}} expected-note{{replace 'default'}}21 B b; // expected-note 2{{'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; // ok30 31struct F {32 F();33 int n;34};35int f = F().n; // ok36 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; // ok60int j2 = J().f(); // ok61 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