2013-12-19 85 views
3

有人可以給同一個rvalue參考參數比移動構造其它或移動賦值操作符,可充分利用的事實,即傳遞的參數是一個rvalue重載的函數的一個例子?因此,它執行函數的左值參數版本的功能,但是除了使複製或賦值更有效之外,還做了一些特別的事情(僅僅因爲正在傳遞右值)。也許渲染一些其他行動更有效率?更好的是,在某些情況下可能需要額外的東西,但不能用左值執行?到目前爲止,我想不出任何例子。C++右值參考比移動構造函數超載其他

所以我想諮詢一下你們自己的函數的重載:

void ping (const Person& person) { 
    // do something 
} 

void ping (Person&& person) { 
    // do what the first ping does but take advantage of the fact that an rvalue (a temporary?) was passed 
} 

回答

4

其他運營商的大量在標準庫右值引用重載,例如,operator+字符串:

template<class charT, class traits, class Allocator> 
basic_string<charT,traits,Allocator> 
operator+(const charT* lhs, 
basic_string<charT,traits,Allocator>&& rhs); 

template<class charT, class traits, class Allocator> 
basic_string<charT,traits,Allocator> 
operator+(basic_string<charT,traits,Allocator>&& lhs, 
const charT* rhs); 

當然,還有push_backemplace_back以及插入/放置容器系列函數的其餘部分:

void push_back(T&& x); 
template <class... Args> void emplace_back(Args&&... args); 
+0

和任何完美轉發的東西基本上 –