如何将给定的模板专门化为模板
How to specialize a given template for a template
本文关键字:专门化 更新时间:2023-10-16
是否可以将此模板专门用于任何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
提供一个类型参数。
相关文章:
- 是否可以对零模板参数进行模板专门化
- 尝试根据类中 typedef 的存在来专门化模板函数
- 如何基于模板化类的基类专门化成员函数
- 如何为指向复杂值的迭代器专门化算法?
- 专门化模板覆盖函数/避免对象切片
- 我能否根据其运算符()的签名专门化可变参数模板参数
- 如何使用模板化类专门化模板化函数?
- 线程 std::调用未知类型,无法专门化函数错误
- 输入两个不专门化大小的矩阵
- 如何在模板类中专门化赋值运算符?
- 如何专门化容器和枚举的模板
- Clang拒绝类模板的嵌套类仅通过专门化定义的代码是正确的吗
- 取消专门化C++模板参数
- SFINAE的变分变量模板专门化
- 如何在编译时专门化大型模板函数中的小部分
- 如何在c++运算符()中专门化调用模板
- 模板函数,其中一个参数需要专门化,而另一个不需要
- 如何专门化字符串数组的模板?
- 如何专门化模板
- 如何避免为模板化迭代器的每个可能的实例化专门化iterator_traits?