3

假设我有任意模板方法,它可以按值const 引用接收参数 (显然,对于普通类型和相应的对象)。

在编写模板函数原型时如何处理这种情况?

我可以做类似的事情:

template <typename T> void Foo(T value) {
   // Do something.
}

template <typename T> void Foo(const T& value) {
   // Do something, yeah.
}

// Specialization for first prototype. 
template <> void Foo<int>(int value) { }

// Specialization for second prototype. 
template <> void Foo<Object>(const Object& value) { }

但是这种方法只适用于琐碎的函数,它们纯粹作为一些其他调用的包装器。

如果函数(非模板版本)里面有很多代码,这意味着我必须复制代码两次。

我可以在这里做一些更聪明的事情吗?

4

2 回答 2

7

总是使用 const 引用,因为将原始类型作为 const 引用传递并没有太多开销。

于 2010-10-12T14:17:03.043 回答
5

仅为引用编写模板代码,const并依靠编译器来优化引用。

于 2010-10-12T14:17:19.710 回答