在某些情况下,您希望void fun(const T&&)
超过void fun(T&&)
和void fun(const T&)
吗?
答案 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.