Почему нельзя использовать goto в constexpr функциях?
Почему нельзя использовать goto в constexpr функциях?
constexpr auto foo() {
hell: goto hell; // error: 'goto' in 'constexpr' function
}
Ответы (1 шт):
Автор решения: tocic
→ Ссылка
От слишком строгих правил для constexpr функций постепенно избавляются. В С++23 с принятием P2242 можно будет использовать метки и goto в constexpr функциях, но не в контексте constant expression.
#include <cassert>
constexpr auto foo() {
if consteval {
// can't use 'goto'
return 42;
} else {
goto test;
test: return 43;
}
}
int main() {
static_assert(foo() == 42);
assert(foo() == 43);
}