【发布时间】:2020-09-07 18:24:35
【问题描述】:
考虑以下 c++ 程序:
template<typename X>
struct S
{
X x;
};
template<typename>
void f()
{
S<void> s;
}
int main()
{
}
使用“-std=c++17 -pedantic-errors”编译时,clang 会出现编译错误,但 gcc 不会出现编译错误。
c++ 标准对这个程序有什么看法?它是否有效?如果它无效,它是否有未定义的行为?
如果回答这个问题的人可以继续并在他们的回答中包含 c++ 标准的相关部分,那就太好了。
编译器资源管理器链接来试试这个:https://godbolt.org/z/Ke1K7b
【问题讨论】:
-
f()永远不会被实例化。将f<int>();添加到主目录。
标签: c++ templates language-lawyer