【发布时间】:2021-10-13 04:48:44
【问题描述】:
msvc 编译以下代码(使用 /permissive- 编译器开关)、clang 和 gcc do not:
template<auto val>
struct S{
static constexpr auto val = val;
};
int main() {
return S<4>::val;
}
我认为这只是一个 msvc 错误,但我很好奇这里的标准是否模棱两可。
【问题讨论】:
-
我的理解(在使用 GCC 编译 MSVC 代码时遇到这个问题)是 MSVC 将其作为扩展。
-
你应该在你的问题中提到MSVC用
/permissive-成功编译了这个(根据你的godbolt链接)。这是一个重要的细节。 -
给report the bug的建议
-
@Frank 固定,ty
标签: c++ language-lawyer c++20 non-type-template-parameter