模板类与模板类的专用化
Template class specialization with template class
本文关键字:专用 更新时间:2023-10-16
相关问题:
- 具有模板类的 C++ 嵌套模板专用化 使用模板类
- 参数的模板类专用化
请考虑以下代码:
template <typename T>
struct is_std_vector: std::false_type { };
template<typename ValueType>
struct is_std_vector<std::vector<ValueType>>: std::true_type { };
为什么这样的模板类专用化语法是正确的?以下似乎更合乎逻辑:
template <typename T>
struct is_std_vector: std::false_type { };
template<> //--- because it is is_std_vector specialization
template<typename ValueType>
struct is_std_vector<std::vector<ValueType>>: std::true_type { };
类模板部分专用化语法与函数模板语法非常相似。实际上,对类模板部分专用化进行排序的规则基于函数模板部分排序。
编写采用vector<T>
的函数的方式是:
template <class T>
void is_std_vector(vector<T> ) { ... }
因此,您在vector<T>
上编写专业化的方式是相同的:
template <class T>
class is_std_vector<vector<T>> { ... };
匹配is_std_vector
的专业化会尝试从某种类型参数A
中推断出T
vector<T>
,因此它们以相同的方式编写是很有意义的。
对于完全专业化,我们使用template <>
作为占位符信号,使完全专业化看起来类似于部分专业化。我不确定在这种特殊情况下额外的template <>
会有什么目的。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 调用专用模板时出错"no matching function for call to [...]"
- 模板专用化(按容器):value_type
- 静态数据成员模板专用化的实例化点在哪里
- 特征 3 类的模板专用化
- Visual Studio 2017 不允许我创建 C++ 专用模板
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- 具有常量引用参数的函数模板专用化
- 使用其他模板的模板专用化
- 使用专用显卡进行 OpenGL 渲染时帧速率较低
- 嵌套模板显式专用化
- 如何检查模板专用化是否是基本模板的子类?
- C++:部分模板专用化用例
- 通过依赖类型使用非类型模板参数的单类型模板参数类模板的部分专用化
- 使用对象的基类部分模板专用化对对象进行哈希处理::哈希
- 在 C++20 中是否不再允许在 std 中对程序定义类型的函数模板进行专用化?
- 为什么依赖模板类型在部分专用化中不可推导?
- 如何为静态常量模板化专用整数值分配存储
- 模板类的部分模板专用化,如 std::function
- 合并一组模板专用化