1 // { dg-do compile { target c++17 } }
3 struct A { bool a, b; };
4 struct B { int a, b; };
10 for (; auto [ a, b ] = A (); ) // { dg-error "expected" }
12 for (; false; auto [ a, b ] = A ()) // { dg-error "expected" }
14 if (auto [ a, b ] = A ()) // { dg-error "expected" }
16 if (auto [ a, b ] = A (); auto [ c, d ] = A ()) // { dg-error "expected" }
18 if (int d = 5; auto [ a, b ] = A ()) // { dg-error "expected" }
20 switch (auto [ a, b ] = B ()) // { dg-error "expected" }
25 switch (int d = 5; auto [ a, b ] = B ()) // { dg-error "expected" }
32 auto [ i, j ] = A (), [ k, l ] = A (); // { dg-error "expected" }
33 auto m = A (), [ n, o ] = A (); // { dg-error "expected" }
37 auto [ a, b ] = A (); // { dg-error "expected" }
41 auto [ e, f ] = A (); // { dg-error "expected" }
42 mutable auto [ g, h ] = A (); // { dg-error "expected" }
43 virtual auto [ i, j ] = A (); // { dg-error "expected" }
44 explicit auto [ k, l ] = A (); // { dg-error "expected" }
45 friend auto [ m, n ] = A (); // { dg-error "expected" }