When I use GCC with Dev-C++, it gets interpreted as MyClass(*)(). Either way, the compiler changes the meaning of the code significantly (without telling you) from something that's semantically illegal (functions can't be passed by value) to something that's legal but very different in meaning.