Static_assert внутри, если constexpr не сбрасывается
Следующие static_assert
следует отбросить, находясь в ложной ветви if constexpr
, однако компиляция не удалась из-за ошибки подтверждения:
#include <type_traits>
template <class T>
constexpr bool f() {
if constexpr (std::is_same<T, int>::value) return true;
else static_assert(false, "message");
}
int main () {
if constexpr (f<int>()) return 1;
return 0;
}
Я ожидаю, что отброшенная ветвь if constexpr
не будет оцениваться, потому что f
создается с типом int
,
Скомпилировано с Gcc 7.2 (-std= C++17)