У меня есть следующий код, который прекрасно компилируется в gcc, но не входит в какой-то файл .cpp
(и является единственным текстом в этом файле):
#include <type_traits>
static constexpr int howIsThisPossible() {
if constexpr (std::is_same_v<int, int>) {
return 42;
} else if constexpr (std::is_same_v<int, double>) {
return 123;
}
}
Я получаю
error: constexpr if condition is not a constant expression
} else if constexpr (std::is_same_v<int, double>) {
^
Я не понимаю, почему это не constexpr, когда определение is_same_v
:
template <typename _Tp, typename _Up>
inline constexpr bool is_same_v = is_same<_Tp, _Up>::value;
Что я делаю неправильно / не понимаю?