// RUN: %clang_cc1 -std=c++1z -verify %s

namespace pr32864_0 {
  struct transfer_t {
    void *fctx;
  };
  template <typename Ctx> class record {
    void run() {
      transfer_t t;
      Ctx from{t.fctx};
    }
  };
}

namespace pr33140_0a {
  struct S {
    constexpr S(const int &a = 0) {}
  };
  void foo(void) { S s[2] = {}; }
}

namespace pr33140_0b {
  bool bar(float const &f = 0);
  bool foo() { return bar() && bar(); }
}

namespace pr33140_2 {
  // FIXME: The declaration of 'b' below should lifetime-extend two int
  // temporaries.
  struct A { int &&r = 0; }; // expected-note 2{{initializing field 'r' with default member initializer}}
  struct B { A x, y; };
  B b = {}; // expected-warning 2{{lifetime extension of temporary created by aggregate initialization using a default member initializer is not yet supported}}
}

namespace pr33140_3 {
  typedef struct Y { unsigned int c; } Y_t;
  struct X {
    Y_t a;
  };
  struct X foo[2] = {[0 ... 1] = {.a = (Y_t){.c = 0}}}; // expected-warning {{C99 extension}}
}

namespace pr33140_6 {
  struct Y { unsigned int c; };
  struct X { struct Y *p; };
  int f() {
    // FIXME: This causes clang to crash.
    //return (struct X[2]){ [0 ... 1] = { .p = &(struct Y&)(struct Y&&)(struct Y){0} } }[0].p->c;
    return 0;
  }
}

namespace pr33140_10 {
  int a(const int &n = 0);
  bool b() { return a() == a(); }
}

namespace GH67317 {
struct array {
  int (&data)[2];
  array() : data(*new int[1][2]) {}
};
}
