Я пробую этот пример из учебника по использованию if constexpr и получаю ошибку expected ‘(’ before ‘constexpr’
при компиляции.
Я компилирую с g++ -std=c++17 test.cpp
, поэтому версия должна его поддерживать. Visual Studio Code это понимает и намекает, что это выражение будет скомпилировано в число 120
(правильно).
#include <iostream>
using std::cout;
using std::endl;
template <int N>
constexpr int fun() {
if constexpr (N <= 1) {
return 1;
} else {
return N * fun<N - 1>();
}
}
int main(int argc, char** argv) {
cout << fun<5>() << endl;
return 0;
}
Этот код должен компилироваться без ошибок