(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
cpp1y/
nsdmi-aggr16.C
// PR c++/100252
// { dg-do compile { target c++14 } }

#define SA(X) static_assert ((X),#X)

struct A {
  const A* p = this;
};

struct B {
  A a = A{};
};

constexpr B b;
SA(b.a.p == &b.a);
B b1 = { };

struct C {
  A a = (true, A{});
};

constexpr C c;
SA(c.a.p == &c.a);
C c1 = { };

struct D {
  A a = (A{});
};

constexpr D d;
SA(d.a.p == &d.a);
D d1 = { };

static constexpr A global_a;

struct E {
  A a = true ? A{} : A{};
  A b = true ? global_a : (false ? A{} : A{});
  A c = true ? (false ? A{} : A{}) : global_a;
  A d = true ? (false ? A{} : A{}) : (false ? A{} : A{});
};

constexpr E e;
SA (e.a.p == &e.a);

E e1 = { };

struct F {
  bool b = (A{}, true);
};

constexpr F f;

void
g (B b2 = B{}, C c2 = C{}, D d2 = D{}, E e2 = E{})
{
}