OK, I ran into this today, when the TI TMS470 C++ compiler refused to take it.
This comes from the Silver version of the C++ translation of the "Head First Design Patterns" example code.
class foo { ... protected: virtual ~foo() = 0 {}; // compiler barfs on this line }; The compiler refused to accept the combination of "= 0" (pure virtual) and "{}" (I'm guessing that this is to let a derived class throw the destructor up anyway.
What exactly are they trying to do with that line, is it really legal C++, and how critical is it?