2014-03-02 36 views
2

是否有任何情況下您比較喜歡void fun(const T&&)而不是void fun(T&&)void fun(const T&)首選const T &&

回答

3

有些情況下寧願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. 
相關問題