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