嗨,任何人都可以解释模板模板部分专业化的正确语法是什么? 甚至可能吗? 任何帮助都非常感谢
template < typename A >
class X
{
};
template < typename B >
class Y
{
};
template < template< typename > class U, class T >
class Z
{
// there are other methods in class which i don't want to replicate
void func(); // want to specialize this for class X
};
template < template< typename > class U, class T >
void Z< U, T >::func()
{
std::cout << " this is done ";
}
// specialize this for X
template < template< typename > class U, class T >
void Z< X, T >::func()
{
}
您不能只专门化类模板的一部分。当您部分专用化类模板时,您需要提供整个声明,而不仅仅是单个函数。
而且,您不能部分专用化函数模板。
你也许可以通过继承做你想做的事。可以在基类中收集共享方法,然后定义一个模板化派生类,该类对具有例外的方法具有部分专用化。