我有一个看起来像这样的模板
template <typename T> class Foo
{
public:
Foo(const T& t) : _t(t) {}
private:
const T _t;
};
有一种精明的模板元编程方法可以避免在参数类型像布尔值或char这样琐碎的情况下使用const引用吗?喜欢:
Foo(stl::smarter_argument<T>::type t) : _t(t) {}
1
我不会担心,如果函数很小,编译器将内联它,甚至引用也将不存在。如果函数很大,则将整数包装到引用中的微不足道的费用将微不足道
—
Alan Birtles
我会更担心完美的转发,然后再避免引用小数据类型。我猜想在大多数情况下,按r值引用传递可以优化为按值传递。
—
超级
需要记住的事情,而不是在答案中指出的:您正在做的事情会打败隐含的推论指南。如果您关心类模板参数的推导工作,则应该记得写一个明确的推导指南
—
Brian
Foo
。