4

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

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

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

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

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

4

1 回答 1

3

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

  1. 它不会是模板专业化
  2. 不会从代码中调用swap<foo>( a, b )
  3. 可能swap( a, b )是whena和/或bare可转换为的类型的最佳匹配foo
于 2013-04-19T17:12:40.563 回答