Compiler Warning (level 3) C4281

'operator –>' recursion occurred through type 'type'

Your code contains an incorrect use of operator–>. Check your code to make sure operator–> does not call itself.

The following code shows the problem:

struct A;
struct B;
struct C;

struct A {
   int z;
   B& operator->();
};

struct B {
   C& operator->();
};

struct C {
   A& operator->();
};

void f(A p) {
   int i = p->z; // warning C4281
}