我有一个从另一个模板继承的模板,本身作为第二个模板的模板参数。继承的模板定义了一个静态函数:具有静态功能模板的模板专业化
template<class T> class A
{
public:
static void foo();
};
template<class T> class B : public A<B>
{
};
现在我要实现对A类专门为B静态函数,但为B不专业。但我无法弄清楚如何声明模板。我甚至不确定这是否可能。我的第一个尝试是:
template<class T> void A<B<T>>::foo()
{
}
但这给出了错误:
"Nested name specifier 'A<B<T>>::" for declaration does not refer into a class, class template or class template partial specialization"
我试着像前面添加“模板<>”,但没有工作的那些不同的东西。我能够编译此:
template<> void A<B<int>>::foo()
{
}
除了这一点:
template<class T> void A<T>::foo()
{
}
这是在部分专业化的尝试?我的第一印象是没有(有没有模板与多个参数,我想专门化其中之一)。相反,我想用另一个不专门的模板专门化模板。这是可能的,如果是这样,什么是正确的语法?
谢谢,我刚刚纠正。我想实现A与B的专业化的静态功能,但没有专门化B. – sweatervest