タイプと非タイプの両方のテンプレートパラメータを持つテンプレートクラスがあります。メンバー関数を特殊化したいのですが、次の例のように、完全な特殊化をうまく行うことができます。
template<typename T, int R>
struct foo
{
foo(const T& v) :
value_(v)
{}
void bar()
{
std::cout << "Generic" << std::endl;
for (int i = 0; i < R; ++i)
std::cout << value_ << std::endl;
}
T value_;
};
template<>
void foo<float, 3>::bar()
{
std::cout << "Float" << std::endl;
for (int i = 0; i < 3; ++i)
std::cout << value_ << std::endl;
}
ただし、この部分的な特殊化はコンパイルされません。
template<int R>
void foo<double, R>::bar()
{
std::cout << "Double" << std::endl;
for (int i = 0; i < R; ++i)
std::cout << value_ << std::endl;
}
私が試みていることを達成する方法はありますか?これをMSVC2010で試しました。