如何专门化模板的给定模板

时间:2012-03-26 22:53:15

标签: c++

是否可以为任何basic_string专门化这个模板?

template<class T> struct X {};

由于basic_string本身就是一个模板,我知道这将是一个解决方案:

template <template <class, class, class> class T> struct X {}; template <> struct X<basic_string> {};

但是,我想知道该语言是否允许保留第一个模板定义,通过专门为basic_string专门设置它。

1 个答案:

答案 0 :(得分:3)

是:

#include <string>

template <typename> struct X;

template <typename TChar, typename TTraits, typename TAlloc>
struct X<std::basic_string<TChar, TTraits, TAlloc>>
{
    // ...
};

您的主要模板需要一个类型参数,因此每个专精都必须以某种方式为X提供一个类型参数。