是否可以针对任何 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 以某种方式专门化它来保留第一个模板定义。
最佳答案
是的:
#include <string>
template <typename> struct X;
template <typename TChar, typename TTraits, typename TAlloc>
struct X<std::basic_string<TChar, TTraits, TAlloc>>
{
// ...
};
您的主模板采用一个类型参数,因此每个特化都必须以某种方式为X
提供一个类型参数。
关于c++ - 如何为模板专门化给定的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9881062/