C++11 makes it possible to overload member functions based on reference qualifiers:
class Foo { public: void f() &; // for when *this is an lvalue
If f() needs a Foo temp that is a copy of this and modified, you can modify the temp this instead while you can't otherwise
this