次のように、特殊化する必要があるテンプレート メンバー関数を持つテンプレート クラスがあります。
template <typename T>
class X
{
public:
template <typename U>
void Y() {}
template <>
void Y<int>() {}
};
VCはこれを正しく処理しますが、明らかにこれは標準ではなく、GCCは不平を言います:explicit specialization in non-namespace scope 'class X<T>'
私は試した:
template <typename T>
class X
{
public:
template <typename U>
void Y() {}
};
template <typename T>
// Also tried `template<>` here
void X<T>::Y<int>() {}
しかし、これにより VC と GCC の両方が文句を言います。
これを行う正しい方法は何ですか?