brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 73701e1 Raw
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