2013-10-20 10 views

答えて

14

すぐ下ダウン読み取る:オーバーロード解決の間

、クラスXの非静的CV修飾メンバ関数があれば、CV修飾Xにタイプ左辺値参照の暗黙のパラメータを受け取る関数として扱われますそれはref-qualifierを持たないか、またはlvalue ref-qualifierを持っている場合です。 (それは右辺値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である場合には& -qualifiedを、呼び出し元オブジェクトがrvalueの場合には& & -qualifiedの関数を探します。

+2

すべての非人間的な標準語句が明確かつ簡潔な例で補足されれば、この世界はどのくらい良いところになるでしょうか! –

関連する問題