Есть ли какая-либо причина только if constexpr
для включения в С++ 17?
Я мог бы сделать это:
template <int N>
constexpr int fib() {
if constexpr (N == 1 || N == 2) {
return 1;
} else {
return fib<N - 1>() + fib<N - 2>();
}
}
Почему комитет С++ не рассмотрел switch constexpr
тоже?
template <int N>
constexpr int fib() {
switch constexpr (N) {
case 1:
case 2: return 1;
default: return fib<N - 1>() + fib<N - 2>();
}
}
Он выглядел намного круче с помощью switch constexpr
Или даже преждевременный цикл цикла компиляции отключается с помощью for constexpr
/while constexpr
без использования функции замены шаблона/рекурсивного шаблона:
constexpr void printFoo() {
for constexpr (auto i = 0; i < 10; i++) {
cout << fib<i>() << endl;
}
}
Будут ли они включены в С++ 20/будущие версии С++?