===================================================================
@@ -4385,6 +4385,8 @@ potential_constant_expression_1 (tree t, bool want
case TRUTH_NOT_EXPR:
case FIXED_CONVERT_EXPR:
case UNARY_PLUS_EXPR:
+ case UNARY_LEFT_FOLD_EXPR:
+ case UNARY_RIGHT_FOLD_EXPR:
unary:
return RECUR (TREE_OPERAND (t, 0), rval);
@@ -4565,6 +4567,8 @@ potential_constant_expression_1 (tree t, bool want
case MEMBER_REF:
case DOTSTAR_EXPR:
case MEM_REF:
+ case BINARY_LEFT_FOLD_EXPR:
+ case BINARY_RIGHT_FOLD_EXPR:
binary:
for (i = 0; i < 2; ++i)
if (!RECUR (TREE_OPERAND (t, i), want_rval))
===================================================================
@@ -0,0 +1,8 @@
+// PR c++/67926
+// { dg-options -std=c++1z }
+
+template <bool ... T> bool FUR = (T && ...);
+template <bool ... T> bool FUL = (... && T);
+
+template <bool T1, bool ... T2> bool FBR = (T1 && ... && T2);
+template <bool T1, bool ... T2> bool FBL = (T2 && ... && T1);