喜欢const T&&

时间:2014-03-02 17:23:58

标签: c++11 rvalue-reference

在某些情况下,您希望void fun(const T&&)超过void fun(T&&)void fun(const T&)吗?

1 个答案:

答案 0 :(得分:4)

在某些情况下,首选const T&&优先于T&&。例如,假设您有一个只应使用const左值引用调用的方法,因为该方法存储引用。在这种情况下,最好为rvalue引用添加已删除的覆盖,以避免临时对象可以绑定到const lvalue引用。

void foo(const bar& b) { ... }
void foo(const bar&&) = delete;

如果您有一个返回const bar的方法,将选择第二个重载。它不适用于T&&而不是const T&&

const bar make_bar() { ... }
foo(make_bar()); // ERROR, foo is deleted.