https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116775
--- Comment #8 from Iain Sandoe <iains at gcc dot gnu.org> --- (In reply to Iain Sandoe from comment #7) > on a bit more examination - it seems to me that: > > http://eel.is/c++draft/expr.await#2 > > says that this should be ill-formed > > Since the GCC doc says: > > Built-in Function: int __builtin_constant_p (exp) > You can use the built-in function __builtin_constant_p to determine if the > expression exp is known to be constant at compile time and hence that GCC > can perform constant-folding on expressions involving that value. The > argument of the function is the expression to test. The expression is not > evaluated, side-effects are discarded. However, it seems that we do not treat the argument of __builtin_constantP() as an unevaluated operand, and when I do - bootstrap fails... so there's some conceptual difference between "an operand that is not evaluated" and a c++ "unevaluated operand" (or the documentation for the builtin is in error)