blob: f0d202d696aca891b2d1085aea44592c5c7c4b4e [file] [log] [blame]
// PR c++/87122
// { dg-do run { target c++14 } }
// { dg-options "" }
extern "C" void abort ();
struct S { int a, b; };
int c;
template <int N>
void
foo ()
{
S x[4] = { { N, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
auto f = [](auto & y) {
for (auto & [ u, v ] : y) // { dg-warning "structured bindings only available with" "" { target c++14_down } }
{
if ((u & 1) != 1 || v != u + 1 || u < N || u > 7 || (c & (1 << u))
|| &u != &y[v / 2 - 1].a || &v != &y[v / 2 - 1].b)
abort ();
c |= 1 << u;
}
};
f (x);
}
int
main ()
{
foo<1> ();
if (c != 0xaa)
abort ();
}