相关疑难解决方法(0)

非命名空间作用域中的显式特化不在GCC中编译

以下代码在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.

c++ gcc templates bug-reporting language-lawyer

9
推荐指数
2
解决办法
1950
查看次数

标签 统计

bug-reporting ×1

c++ ×1

gcc ×1

language-lawyer ×1

templates ×1