class B { protected: class BI {}; }; class D : public B { class DI : public BI {}; // (1) };
VC++6では、(1)のところでBIが定義されていないと言われます。 class DI : public B::BI {}; とすればBIは見つかりますが、今度はprotectedにはアクセスできないと言われます。 BIをpublicにすると、コンパイルできます。 これって合法だと思うのですが、標準規格ではどうなのでしょうか。VCがおバカなだけ?