专用模板——目的
Specialized templates - the purpose
我知道c++中的模板是做什么的,但是今天我看到了一些奇怪的代码:
template <> void swap(foo &a, foo &b)
{
a.name = b.name;
a.id = 1;
// blah blah blah
}
我做了一些研究,发现它被称为专用模板,或者类似的东西。
如果在上面的代码中我删除template <>
部分,我将得到完全相同的结果。也没有像一般模板函数那样的通用类型…
我的问题是——使用它们的目的是什么?
将template <>
从该函数中删除将导致以下更改:
- 不能是模板专门化。
- 代码
swap<foo>( a, b )
不会调用 - 当
a
和/或b
是可转换为foo
的类型时,可以是swap( a, b )
的最佳匹配。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 调用专用模板时出错"no matching function for call to [...]"
- 模板专用化(按容器):value_type
- C++中名称篡改的目的是什么
- 通过实例理解std::move及其目的
- 功能原型的目的
- "input.length();"的目的是什么?
- 静态数据成员模板专用化的实例化点在哪里
- 特征 3 类的模板专用化
- Visual Studio 2017 不允许我创建 C++ 专用模板
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- 具有常量引用参数的函数模板专用化
- 使用其他模板的模板专用化
- 使用专用显卡进行 OpenGL 渲染时帧速率较低
- 嵌套模板显式专用化
- 如何检查模板专用化是否是基本模板的子类?
- 在函数中拥有函数原型的目的是什么?
- C++:部分模板专用化用例
- 通过依赖类型使用非类型模板参数的单类型模板参数类模板的部分专用化
- 专用模板——目的