ref-qualifiers。 メンバ関数の宣言の末尾に & または && を付けて、*this が左辺値か右辺値かによって呼び分けるための修飾子。

参照修飾子のないメンバ関数と、参照修飾子付きメンバ関数は同じ名前で併用できない。 また、& だけ、または && だけを用意した場合は、対応しない側のオブジェクトからは呼び出せない。

  • 返り値 関数(引数リスト) & *this が左辺値のときに呼ばれる
  • 返り値 関数(引数リスト) && *this が右辺値のときに呼ばれる
struct S
{
    void f() &
    {
    }
 
    void f() &&
    {
    }
};

参考