Is the following legal:
class foo {};
class bar {
class foo : public ::foo {}; // (*)
};
Sun C++ (cfront 3.0) and VC++ complains at (*) about foo being derived from
itself.
Assuming the global foo is an abstract class, it may be useful to "reuse
its name" when providing an implementation.