struct _Container_base0; struct _Iterator_base0 { const _Container_base0 *_Getcont() const; }; template class _Tree_unchecked_const_iterator { }; template class _Tree_const_iterator { public: typedef _Tree_const_iterator<_Mytree> _Myiter; typedef _Tree_unchecked_const_iterator<_Mytree> _Unchecked_type; _Unchecked_type _Unchecked() const { return (_Unchecked_type((_Mytree *)this->_Getcont())); } }; template struct _Tree_nod : public _Traits { }; template struct _Tree_val : public _Tree_nod<_Traits> { typedef _Tree_nod<_Traits> _Mybase; }; template struct _Tree : public _Tree_val<_Traits> { typedef _Tree_val<_Traits> _Mybase; typedef _Tree_const_iterator<_Mybase> const_iterator; }; template class _Tmap_traits { }; template class map { public: typedef _Tree<_Tmap_traits<_Kty> > _Mybase; }; template inline void foo() { typedef map<_Kty> _Myt; }