UPD :为什么它不与(Syntax for specialization of nested template class)重复 - 提供的答案要求我完全覆盖特化类。在我的情况下,我只需要专门的单一方法
在我提出问题之前,我发布了有效的绝对正确代码:
template <class T>
struct Gen
{
void method()
{
std::cout << "I'm generic method\n";
}
};
template <>
void Gen<int>::method()
{
std::cout << "I'm dedicated for int method\n";
}
int main()
{
Gen<float> g1;
g1.method(); //generic method
Gen<int> g2;
g2.method(); //int method
}
因此,这声明了模板类的方法,它具有int
的特殊行为。
现在我尝试使用嵌套模板类完全相同:
template <class T>
struct GenNest
{
template <class R>
struct Nest
{
void method()
{
std::cout << "I'm generic method\n";
}
};
};
template <class T>
template <>
void GenNest<T>::Nest<int>::method()
{
std::cout << "I'm dedicated for int method\n";
}
int main()
{
GenNest<float>::Nest<float> n1;
n1.method(); //generic method
}
这种情况在编译时失败
亲爱的社区 - 出了什么问题以及如何解决它?