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