'operator –>' was self recursive through type 'type'
Your code incorrectly allows operator–> to call itself.
Example
struct A { int z; A& operator ->(); }; void f(A y) { int i = y->z; // warning C4280 }