johnwasser: It also compiles if you change:
I wasn't aware that worked too. Does it implicitly declare 'class John;'?