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

时间:2016-03-02 06:08:48

标签: c++ templates

您可以请任何人解释一下模板模板部分特化的正确语法是什么?或甚至可能吗?非常感谢任何帮助

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

}

1 个答案:

答案 0 :(得分:0)

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

你不能部分专门化一个功能模板。

您可以通过继承做您想做的事。您可以在基类中收集共享方法,然后使用具有异常的方法的部分特化来定义模板化派生类。