ref qualifier

ref-qualifier is a way to help the compiler decide which function to call when the object is an lvalue or an rvalue. Since the object is passed as an implicit pointer type parameter to the function (pointer this) the ref-qualifiers have been also referred as “rvalue reference for *this”. 
ref-qualifiers are specified with & for lvalues and && for rvalues at the end of the function signature after the cv-qualifiers.
```
#include <iostream>
#include <string>
#include <utility>
using namespace std;

struct A {
  string abc = "abc";
  string& get() & { cout << "get() &" << endl; return abc; }
  string get() && { cout << "get() &&" << endl; return std::move(abc); }
  string const& get() const & { cout << "get() const &" << endl; return abc; }
  string get() const && { cout << "get() const &&" << endl; return abc; }
};

int main() {
  A a1;
  a1.get();
  std::move(a1).get();
  const A a2{};
  a2.get();
  std::move(a2).get();
}
/* 
get() &
get() &&
get() const &
get() const &&
*/
```