2
是否有任何情況下您比較喜歡void fun(const T&&)
而不是void fun(T&&)
和void fun(const T&)
?首選const T &&
是否有任何情況下您比較喜歡void fun(const T&&)
而不是void fun(T&&)
和void fun(const T&)
?首選const T &&
有些情況下寧願const T&&
優於T&&
。例如,假設你有一個方法只能用一個常量左值引用來調用,因爲方法存儲了引用。在這種情況下,最好爲rvalue引用添加一個刪除的覆蓋,以避免臨時對象可以綁定到常量左值引用。
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.