17

次のコードは 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ます.

4

1 に答える 1