72 lines · cpp
1// RUN: %clang_cc1 -std=c++1z -verify %s2 3namespace pr32864_0 {4 struct transfer_t {5 void *fctx;6 };7 template <typename Ctx> class record {8 void run() {9 transfer_t t;10 Ctx from{t.fctx};11 }12 };13}14 15namespace pr33140_0a {16 struct S {17 constexpr S(const int &a = 0) {}18 };19 void foo(void) { S s[2] = {}; }20}21 22namespace pr33140_0b {23 bool bar(float const &f = 0);24 bool foo() { return bar() && bar(); }25}26 27namespace pr33140_2 {28 struct A { int &&r = 0; };29 struct B { A x, y; };30 B b = {};31}32 33namespace pr33140_3 {34 typedef struct Y { unsigned int c; } Y_t;35 struct X {36 Y_t a;37 };38 struct X foo[2] = {[0 ... 1] = {.a = (Y_t){.c = 0}}}; // expected-warning {{C99 extension}}39}40 41namespace pr33140_6 {42 struct Y { unsigned int c; };43 struct X { struct Y *p; };44 int f() {45 // FIXME: This causes clang to crash.46 //return (struct X[2]){ [0 ... 1] = { .p = &(struct Y&)(struct Y&&)(struct Y){0} } }[0].p->c;47 return 0;48 }49}50 51namespace pr33140_10 {52 int a(const int &n = 0);53 bool b() { return a() == a(); }54}55 56namespace GH67317 {57struct array {58 int (&data)[2];59 array() : data(*new int[1][2]) {}60};61}62 63namespace GH96670 {64inline constexpr long ullNil = -1;65 66template<typename T = long, const T &Nil = ullNil>67struct Test {};68 69inline constexpr long lNil = -1;70Test<long, lNil> c;71}72