代码:
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 的变更说明里似乎也没有。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.