2012-03-26 78 views
0

是否有可能专门针对任何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的唯一。

回答

3

是:

#include <string> 

template <typename> struct X; 

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

您的主模板需要一个类型参数,所以每一个专业化必须提供一个类型参数X,这种或那种方式。