https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116775
--- Comment #7 from Iain Sandoe <iains at gcc dot gnu.org> --- 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. --- (although it seems that clang accepts it and does something reasonable - we can implement something on the lines of the proposed solutions)