1 // { dg-do compile } 2 // { dg-options "-O3 -ftracer -fsched-pressure -Wno-unused-parameter -Wno-return-type" } 3 4 extern "C" 5 { 6 namespace std 7 { 8 class exception 9 { 10 virtual const char *what () const throw (); 11 }; 12 } 13 } 14 namespace std __attribute__ ((__visibility__ ("default"))) 15 { 16 template < typename _Alloc > class allocator; 17 template < class _CharT > struct char_traits; 18 template < typename _CharT, typename _Traits = 19 char_traits < _CharT >, typename _Alloc = 20 allocator < _CharT > >class basic_string; 21 typedef basic_string < char >string; 22 template < typename _CharT, typename _Traits = 23 char_traits < _CharT > >class basic_ios; 24 typedef basic_ios < char >ios; 25 } 26 27 namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 28 { 29 template < typename _Tp > class new_allocator 30 { 31 }; 32 } 33 34 namespace std __attribute__ ((__visibility__ ("default"))) 35 { 36 template < typename _Tp > class allocator:public __gnu_cxx::new_allocator < 37 _Tp > 38 { 39 }; 40 } 41 42 typedef int _Atomic_word; 43 namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) 44 { 45 static inline _Atomic_word __exchange_and_add_dispatch(_Atomic_word * __mem,int __val)46 __attribute__ ((__unused__)) __exchange_and_add_dispatch (_Atomic_word * 47 __mem, 48 int __val) 49 { 50 } 51 } 52 53 namespace std __attribute__ ((__visibility__ ("default"))) 54 { 55 template < typename _CharT, typename _Traits, 56 typename _Alloc > class basic_string 57 { 58 typedef _Alloc allocator_type; 59 private:struct _Rep_base 60 { 61 _Atomic_word _M_refcount; 62 }; 63 struct _Rep:_Rep_base 64 { _M_dispose_Rep65 void _M_dispose (const _Alloc & __a) 66 { 67 if (__builtin_expect (this != &_S_empty_rep (), false)) 68 { 69 if (__gnu_cxx:: 70 __exchange_and_add_dispatch (&this->_M_refcount, -1) <= 0) 71 { 72 _M_destroy (__a); 73 } 74 } 75 } 76 void _M_destroy (const _Alloc &) throw (); 77 }; 78 struct _Alloc_hider:_Alloc 79 { 80 _CharT *_M_p; 81 }; 82 private:mutable _Alloc_hider _M_dataplus; _M_data()83 _CharT *_M_data () const 84 { 85 return _M_dataplus._M_p; 86 } _M_rep()87 _Rep *_M_rep () const 88 { 89 return &((reinterpret_cast < _Rep * >(_M_data ()))[-1]); 90 } _S_empty_rep()91 static _Rep & _S_empty_rep () 92 { 93 } basic_string()94 public: basic_string ():_M_dataplus (_S_empty_rep ()._M_refdata (), 95 _Alloc ()) 96 { 97 } 98 basic_string (const _CharT * __s, const _Alloc & __a = _Alloc ()); ~basic_string()99 ~basic_string () 100 { 101 _M_rep ()->_M_dispose (this->get_allocator ()); 102 } get_allocator()103 allocator_type get_allocator () const 104 { 105 } 106 }; 107 class ios_base 108 { 109 public:class failure:public exception 110 { 111 public:explicit failure (const string & __str) throw (); 112 }; 113 }; 114 template < typename _CharT, typename _Traits > class basic_ios:public 115 ios_base 116 { 117 }; 118 namespace iostreams 119 { 120 class zlib_error:public std::ios::failure 121 { 122 public:explicit zlib_error (int error); 123 private:int error_; 124 }; zlib_error(int error)125 zlib_error::zlib_error (int error):std::ios::failure ("zlib error"), 126 error_ (error) 127 { 128 } 129 } 130 } 131