return type for 'identifier::operator –>' is recursive if applied using infix notation
The specified operator–>() function cannot return the type for which it is defined or a reference to the type for which it is defined.
Example
class C { public: C operator->(); // warning C& operator->(); // warning };