// { dg-lto-do link } typedef long unsigned int size_t; namespace std __attribute__ ((__visibility__ ("default"))) { using ::size_t; template struct __is_char { }; # 422 "/usr/include/c++/4.4.0/bits/cpp_type_traits.h" 3 } namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { template struct __enable_if { }; } namespace std __attribute__ ((__visibility__ ("default"))) { template struct pair { }; } namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { template class new_allocator { }; } namespace std __attribute__ ((__visibility__ ("default"))) { template class allocator: public __gnu_cxx::new_allocator<_Tp> { }; template struct binary_function { }; template struct less : public binary_function<_Tp, _Tp, bool> { }; template struct char_traits { typedef _CharT char_type; static std::size_t length(const char_type* __s); }; template std::size_t char_traits<_CharT>:: length(const char_type* __p) { } template > class istreambuf_iterator; template class basic_string { }; } namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { template class __versa_string; template struct __vstring_utility { }; template class __rc_string_base { typedef __vstring_utility<_CharT, _Traits, _Alloc> _Util_Base; typedef typename _Util_Base::_CharT_alloc_type _CharT_alloc_type; typedef typename _CharT_alloc_type::size_type size_type; struct _Rep { union { }; static _Rep* _S_create(size_type, size_type, const _Alloc&); }; }; template typename __rc_string_base<_CharT, _Traits, _Alloc>::_Rep* __rc_string_base<_CharT, _Traits, _Alloc>::_Rep:: _S_create(size_type __capacity, size_type __old_capacity, const _Alloc& __alloc) { }; } template, typename _Alloc = std::allocator<_CharT> > class basic_string : public __gnu_cxx::__versa_string<_CharT, _Traits, _Alloc> { }; template operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, const std::basic_string<_CharT, _Traits, _Alloc>& __rhs) { } namespace std __attribute__ ((__visibility__ ("default"))) { struct __uninitialized_copy { template uninitialized_copy(_InputIterator __first, _InputIterator __last, _ForwardIterator __result) { } }; template uninitialized_copy(_InputIterator __first, _InputIterator __last, _ForwardIterator __result) { } class locale { class facet; }; class locale::facet { }; class ios_base { template friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, istreambuf_iterator<_CharT2> >::__type find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, const _CharT2&); }; template class num_put : public locale::facet { typedef _CharT char_type; typedef _OutIter iter_type; template iter_type _M_insert_float(iter_type, ios_base& __io, char_type __fill, char __mod, _ValueT __v) const; }; template template _OutIter num_put<_CharT, _OutIter>:: _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod, _ValueT __v) const { } template class basic_ios : public ios_base { }; template class basic_istream : virtual public basic_ios<_CharT, _Traits> { typedef basic_istream<_CharT, _Traits> __istream_type; template __istream_type& _M_extract(_ValueT& __v); }; template template basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>:: _M_extract(_ValueT& __v) { } class hash_map { }; } class CDE { public: virtual ~CDE() { } }; namespace std __attribute__ ((__visibility__ ("default"))) { template , typename _Alloc = std::allocator > > class map { }; template operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x, const map<_Key, _Tp, _Compare, _Alloc>& __y) { return !(__x < __y); } } namespace xyz { class XYZ; }; class ABC { public: virtual ~ABC() { } }; class FGH : public CDE, public ABC { public: explicit FGH(CDE* efg); }; namespace { class LMN : public FGH { LMN(CDE* efg, xyz::XYZ* hij) : FGH(efg) { } }; } main(){}