2013-10-20 35 views

回答

14

只需向下讀下面:

在重載解析,等級X的非靜態CV-合格成員函數將被視爲需要的類型左值參考一個隱式參數CV-合格X如果一個函數它沒有ref限定符,或者它有左值ref限定符。否則(如果它具有右值REF-限定符)時,它被視爲所以在過載分辨率服用的類型右值引用的隱式參數到CV-合格X.

#include <iostream> 
struct S { 
    void f() & { std::cout << "lvalue\n"; } 
    void f() &&{ std::cout << "rvalue\n"; } 
}; 

int main(){ 
    S s; 
    s.f();   // prints "lvalue" 
    std::move(s).f(); // prints "rvalue" 
    S().f();   // prints "rvalue" 
} 

的函數編譯器查找功能& - 如果調用者對象是lvalue或功能& & - 合格(如果調用者對象是rvalue),則使用限定功能。

+2

如果所有的不人道標準都以一個清晰而簡潔的例子加以擴充,這個世界將會變得多好! –