专用模板——目的

Specialized templates - the purpose

本文关键字:目的 专用      更新时间:2023-10-16

我知道c++中的模板是做什么的,但是今天我看到了一些奇怪的代码:

template <> void swap(foo &a, foo &b)
{
   a.name = b.name;
   a.id = 1;
   // blah blah blah
}

我做了一些研究,发现它被称为专用模板,或者类似的东西。

如果在上面的代码中我删除template <>部分,我将得到完全相同的结果。也没有像一般模板函数那样的通用类型…

我的问题是——使用它们的目的是什么?

template <>从该函数中删除将导致以下更改:

  1. 不能是模板专门化
  2. 代码swap<foo>( a, b )
  3. 不会调用
  4. a和/或b可转换为foo的类型时,可以swap( a, b )的最佳匹配。