代码:
template<typename T=void>
void f() {
if constexpr(false) {
static_assert(false, "fail");
}
}
int main()
{
f<>();
}
编译结果:
s1.ax1x.com/2022/03/20/qVrfoj.png
godbolt.org/z/GMnKc59E9
为什么同一版本 MSVC 下 C++17 可以编译成功,而 C++20 和 GCC C++17 都不行?是因为 C++17 里这是 UB 吗?
没查到相关资料,C++20 的变更说明里似乎也没有。