Может ли функция constexpr содержать метку?

Nov 16 2020

Эта программа :

constexpr void f() { x: ; }

скомпилирован gcc, но clang говорит:

error: statement not allowed in constexpr function

Так действителен ли этот код?

Ответы

7 cigien Nov 16 2020 at 11:35

Как указано в комментарии Натана Пирсона , Clang правильный, а код плохо сформирован. Согласно текущему рабочему проекту (который включает C ++ 20), dcl.constexpr # 3 говорит:

Определение функции constexpr должно удовлетворять следующим требованиям:

...

его функциональное тело не должно включать

...

метка идентификатора,

...

...