我知道c ++中有哪些模板,但今天我看到了一些奇怪的代码:
template <> void swap(foo &a, foo &b)
{
a.name = b.name;
a.id = 1;
// blah blah blah
}
我做了一些研究,发现它被称为专用模板,或类似的东西。
如果在上面的代码中我删除了template <>
部分,我会得到完全相同的结果。还有通用模板功能中没有通用类型...
我的问题是 - 使用它们的目的是什么?
答案 0 :(得分:3)
从该功能中删除template <>
会导致这些更改:
swap<foo>( a, b )
swap( a, b )
和/或a
是可兑换的类型时,可以成为b
的最佳匹配{1}}。