【C++11】メンバ関数の左辺値/右辺値修飾

*thisの状態に応じて、呼び出すメンバ関数を分けることができる機能。

おもに一時オブジェクトを作成した後に呼び出すメンバ関数で処理を変更したいときに使うかな?

struct X {
  int f() &       // *thisが非constな左辺値である場合に呼び出される
  { return 1; }

  int f() const & // *thisがconstな左辺値である場合に呼び出される
  { return 2; }

  int f() &&      // *thisが右辺値である場合に呼び出される
  { return 3; }
};

X x;
const X cx;

std::cout << x.f() << std::endl;   // 1
std::cout << cx.f() << std::endl;  // 2
std::cout << X().f() << std::endl; // 3
前の記事:【C++20】三方比較演算子 次の記事:【C++20】即時関数 consteval

コメントする