c++ - 如何为模板专门化给定的模板

标签 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 以某种方式专门化它来保留第一个模板定义。

最佳答案

是的:

#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/

相关文章:

c++ - BREW 3.1.5 是否支持 STL?

c++ - 自动矢量化 GCC

c++ - 用默认值标记网格 C++

c++ - 如何在类里面正确使用 boost channel (和光纤)?

c++ - 检查输入是C++中的数字还是字符串

c# - 如何在 C# 中实现 C++ 风格的函数指针?,不使用委托(delegate)

c++ - 如何在fortran中使用write语句调用另一个自定义函数?

c++ - 模板类与非模板类的循环依赖

c++ - 与 VBA 应用程序接口(interface)

C++模板,加载点的高效函数