Overloadng the reference qualifiers
===================================



We can overload on left- or value-ness of parameters


T &      value(optional<T> &      par_);
T &&     value(optional<T> &&     par_);
T const& value(optional<T> const& par_);


But in object-oriented programming, sometimes we want
to overload on the this parameter too.


template <typename T>
class optional
{
  // ...
  T&       value() &;
  T&&      value() &&;
  T const& value() const&;
};