1 // RUN: %clang_cc1 -std=c++1z -verify %s 2 3 namespace pr32864_0 { 4 struct transfer_t { 5 void *fctx; 6 }; 7 template <typename Ctx> class record { run()8 void run() { 9 transfer_t t; 10 Ctx from{t.fctx}; 11 } 12 }; 13 } 14 15 namespace pr33140_0a { 16 struct S { Spr33140_0a::S17 constexpr S(const int &a = 0) {} 18 }; foo(void)19 void foo(void) { S s[2] = {}; } 20 } 21 22 namespace pr33140_0b { 23 bool bar(float const &f = 0); foo()24 bool foo() { return bar() && bar(); } 25 } 26 27 namespace pr33140_2 { 28 // FIXME: The declaration of 'b' below should lifetime-extend two int 29 // temporaries. 30 struct A { int &&r = 0; }; // expected-note 2{{initializing field 'r' with default member initializer}} 31 struct B { A x, y; }; 32 B b = {}; // expected-warning 2{{not supported}} 33 } 34 35 namespace pr33140_3 { 36 typedef struct Y { unsigned int c; } Y_t; 37 struct X { 38 Y_t a; 39 }; 40 struct X foo[2] = {[0 ... 1] = {.a = (Y_t){.c = 0}}}; // expected-warning {{C99 extension}} 41 } 42 43 namespace pr33140_6 { 44 struct Y { unsigned int c; }; 45 struct X { struct Y *p; }; f()46 int f() { 47 // FIXME: This causes clang to crash. 48 //return (struct X[2]){ [0 ... 1] = { .p = &(struct Y&)(struct Y&&)(struct Y){0} } }[0].p->c; 49 return 0; 50 } 51 } 52 53 namespace pr33140_10 { 54 int a(const int &n = 0); b()55 bool b() { return a() == a(); } 56 } 57