在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)