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