1 // Test that we reject a fold-expression with an LHS that is not a
2 // cast-expression.
3
4 // { dg-do compile { target c++17 } }
5
6 int i;
7
8 template <int... Is>
f()9 void f()
10 {
11 (i ? i : Is + ...); // { dg-error "" }
12 (i + Is + ...); // { dg-error "" }
13 (i - Is + ...); // { dg-error "" }
14 (i * Is + ...); // { dg-error "" }
15 (i / Is + ...); // { dg-error "" }
16 (i % Is + ...); // { dg-error "" }
17 (i ^ Is + ...); // { dg-error "" }
18 (i | Is + ...); // { dg-error "" }
19 (i & Is + ...); // { dg-error "" }
20 (i << Is + ...); // { dg-error "" }
21 (i >> Is + ...); // { dg-error "" }
22 (i = Is + ...); // { dg-error "" }
23 (i += Is + ...); // { dg-error "" }
24 (i -= Is + ...); // { dg-error "" }
25 (i *= Is + ...); // { dg-error "" }
26 (i /= Is + ...); // { dg-error "" }
27 (i %= Is + ...); // { dg-error "" }
28 (i ^= Is + ...); // { dg-error "" }
29 (i |= Is + ...); // { dg-error "" }
30 (i &= Is + ...); // { dg-error "" }
31 (i <<= Is + ...); // { dg-error "" }
32 (i >>= Is + ...); // { dg-error "" }
33 (i == Is + ...); // { dg-error "" }
34 (i != Is + ...); // { dg-error "" }
35 (i < Is + ...); // { dg-error "" }
36 (i > Is + ...); // { dg-error "" }
37 (i <= Is + ...); // { dg-error "" }
38 (i >= Is + ...); // { dg-error "" }
39 (i && Is + ...); // { dg-error "" }
40 (i || Is + ...); // { dg-error "" }
41 (i , Is + ...); // { dg-error "" }
42 }
43