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