このテーマはかなり古いものになるはずですが、この特定のケースでは苦労しています。クラステンプレートからメソッドテンプレートを完全に特殊化する
enum MyEnum
{
E_1,
E_2
};
template <MyEnum T>
class MyClass
{
// method to be fully specialized
template <typename U>
void myMethod(U value);
};
// full specialization of method template from class template
// (or is this in fact partial, since I'm leaving T alone?)
template <MyEnum T>
template <>
void MyClass<T>::myMethod<int>(int value)
{
std::cout << value << '\n';
}
これが可能である:ストレートポイントに
が、これは私が何をしたいのですか?
私はちょうどあなたの答えによって啓発されました。私はいつも「あなたが囲んでいるクラスを専門にしなければならない」ということに気付くのは恥ずかしいです。クラス全体を実際に再宣言しなければならないと思っていましたが、それは専門化されたメソッドを複製する必要があるということです。 ?それはちょっと退屈だけど、思ったよりはるかに良い! –