2 // { dg-options "-std=c++17" }
4 struct A { bool a, b; };
5 struct B { int a, b; };
11 for (; auto [ a, b ] = A (); ) // { dg-error "expected|no match" }
13 for (; false; auto [ a, b ] = A ()) // { dg-error "expected" }
15 if (auto [ a, b ] = A ()) // { dg-error "expected" }
17 if (auto [ a, b ] = A (); auto [ c, d ] = A ()) // { dg-error "expected" }
19 if (int d = 5; auto [ a, b ] = A ()) // { dg-error "expected" }
21 switch (auto [ a, b ] = B ()) // { dg-error "expected" }
26 switch (int d = 5; auto [ a, b ] = B ()) // { dg-error "expected" }
33 auto [ i, j ] = A (), [ k, l ] = A (); // { dg-error "expected" }
34 auto m = A (), [ n, o ] = A (); // { dg-error "expected" }
38 auto [ a, b ] = A (); // { dg-error "expected" }
42 auto [ e, f ] = A (); // { dg-error "expected" }
43 mutable auto [ g, h ] = A (); // { dg-error "expected" }
44 virtual auto [ i, j ] = A (); // { dg-error "expected" }
45 explicit auto [ k, l ] = A (); // { dg-error "expected" }
46 friend auto [ m, n ] = A (); // { dg-error "expected" }