以下代码在 Clang 中编译,但在 GCC 中不编译:
template<typename T>
struct Widget
{
template<typename U>
void foo(U)
{
}
template<>
void foo(int*)
{
}
};
根据 C++ 标准([temp.expl.spec],第 2 段):
可以在可以定义相应主模板的任何范围内声明显式特化
这是 GCC 中的错误吗?如果是,我如何在其错误跟踪器中找到它?
这是 GCC 的输出:
prog.cc:13:14: error: explicit specialization in non-namespace scope 'struct Widget<T>'
template<>
^
我正在使用 GCC HEAD 8.0.1,带有-std=c++2a
.