. thus, in short, what is happening is that, for this testcase:
class B { protected: enum E { E1, E2, E3 }; }; class D : private B { public: using B::E; private: enum E { }; };we parse the new declaration enum E { }; and we reach supplement_binding_1 before setting the underlying type of the new declaration. The old declaration is fine, would not ICE dependent_type_p.
Paolo.