// { dg-do run { target c++11 } }
// { dg-options "" }

int a[2] = { 1, 2 };
struct S { int a; signed char b; float c; } s = { 6, 7, 8.0f };

int
main ()
{
  auto & [ c, d ] = a;		// { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
  auto [ e, f ] = a;		// { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
  auto [ g, h, i ] = s;		// { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
  auto & [ j, k, l ] = s;	// { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
  c++;
  d++;
  e += 6;
  f += 7;
  g++;
  h++;
  j += 10;
  k += 11;
  if (c != 2 || &c != &a[0]
      || d != 3 || &d != &a[1]
      || e != 7 || &e == &a[0]
      || f != 9 || &f == &a[1]
      || g != 7 || &g == &s.a
      || h != 8 || &h == &s.b
      || i != 8.0f || &i == &s.c
      || j != 16 || &j != &s.a
      || k != 18 || &k != &s.b
      || l != 8.0f || &l != &s.c
      || a[0] != 2 || a[1] != 3
      || s.a != 16 || s.b != 18 || s.c != 8.0f)
    __builtin_abort ();
}
