模板模板部分专用化的正确语法是什么

what is correct syntax for partial specialization of template template

本文关键字:语法 是什么 板部 专用      更新时间:2023-10-16

嗨,任何人都可以解释模板模板部分专业化的正确语法是什么? 甚至可能吗? 任何帮助都非常感谢

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()
{
}

您不能只专门化类模板的一部分。当您部分专用化类模板时,您需要提供整个声明,而不仅仅是单个函数。

而且,您不能部分专用化函数模板。

你也许可以通过继承做你想做的事。可以在基类中收集共享方法,然后定义一个模板化派生类,该类对具有例外的方法具有部分专用化。