// { dg-do assemble } //980519 bad error from nathan //$ egcs -fhonor-std -nostdinc -c redef.C //redef.C:56: redefinition of default argument for `class _Traits' template struct char_traits; template struct char_traits { }; template<> struct char_traits; template<> struct char_traits { }; template > class istreambuf_iterator; template class istreambuf_iterator { public: typedef _Traits traits_type; class _Proxy; public: inline istreambuf_iterator() throw(); inline istreambuf_iterator(const _Proxy& __p) throw(); }; template class istreambuf_iterator<_CharT,_Traits>::_Proxy { public: _CharT operator*(); //bug -g++ w/ decl "redef", no decl no prob. //ok -edg: no warnings friend class istreambuf_iterator; // XXX OK? //bug -g++ w/ decl "redef", no decl no prob. //ok -edg: no warnings //friend class istreambuf_iterator<_CharT,_Traits>; //bug -g++ w/ decl "redef", no decl no prob. //ok -edg: declaration of "_CharT" and "_Traits" hides template parameter //template friend class istreambuf_iterator; //ok -g++ //ok -edg //friend class istreambuf_iterator<_CharT>; }; //explicit instantiation of a nested class template class istreambuf_iterator >::_Proxy;