使用另一个模板的模板特化

Posted

技术标签:

【中文标题】使用另一个模板的模板特化【英文标题】:Template specialization with another template 【发布时间】:2016-12-05 11:44:20 【问题描述】:

假设我有两个模板类

template < class T >
class Foo

    /**/
;

template < class T >
class Bar

     /**/
;

我怎样才能用Bar&lt;T&gt; 专门化Foo ?? 语法是什么?? 是吗

template<>
template<class T>
class Foo<Bar<T>>
 /**/ ;

template<class T>
class Foo<Bar<T>>
 /**/ ;

或任何其他语法??

【问题讨论】:

template&lt;typename T&gt; class Foo&lt;Bar&lt;T&gt;&gt; 是正确的语法。 你试过了吗? ideone.com/gTorRO 【参考方案1】:

语法是最后一个:

template<class T>
class Foo<Bar<T>>

     /* Your implementation of this partial specialization. */
;

【讨论】:

以上是关于使用另一个模板的模板特化的主要内容,如果未能解决你的问题,请参考以下文章

函数模板参数包后跟模板参数和特化

模板特化和模板模板参数的问题

为啥可变参数模板的模板特化与非可变模板的特化不同?

C++模板编程中只特化模板类的一个成员函数(花样特化一个成员函数)

C++模板详解:泛型编程模板原理非类型模板参数模板特化分离编译

C++模板详解:泛型编程模板原理非类型模板参数模板特化分离编译