00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 #include <string>
00038 
00039 
00040 #ifndef C
00041 # define C char
00042 #endif
00043 
00044 namespace std 
00045 {
00046   typedef basic_string<C> S;
00047 
00048   template class basic_string<C>;
00049   template S operator+(const C*, const S&);
00050   template S operator+(C, const S&);
00051 } 
00052 
00053 namespace __gnu_cxx
00054 {
00055   using std::S;
00056   template bool operator==(const S::iterator&, const S::iterator&);
00057   template bool operator==(const S::const_iterator&, const S::const_iterator&);
00058 }
00059 
00060 namespace std
00061 {
00062   
00063   
00064   
00065   template
00066     S::basic_string(C*, C*, const allocator<C>&);
00067 
00068   template
00069     S::basic_string(const C*, const C*, const allocator<C>&);
00070 
00071   template 
00072     S::basic_string(S::iterator, S::iterator, const allocator<C>&);
00073 
00074   template 
00075     S::basic_string(S::const_iterator, S::const_iterator, const allocator<C>&);
00076 
00077   template 
00078     S& 
00079     S::_M_replace(S::iterator, S::iterator, S::iterator, S::iterator, 
00080           input_iterator_tag);
00081 
00082   template 
00083     S& 
00084     S::_M_replace(S::iterator, S::iterator, S::const_iterator, 
00085           S::const_iterator, input_iterator_tag);
00086 
00087   template
00088     S&
00089     S::_M_replace(S::iterator, S::iterator, C*, C*, input_iterator_tag); 
00090 
00091   template
00092     S&
00093     S::_M_replace(S::iterator, S::iterator, const C*, const C*, 
00094           input_iterator_tag);  
00095 
00096   template 
00097     S& 
00098     S::_M_replace_safe(S::iterator, S::iterator, S::iterator, S::iterator);
00099 
00100   template 
00101     S& 
00102     S::_M_replace_safe(S::iterator, S::iterator, S::const_iterator, 
00103           S::const_iterator);
00104 
00105   template
00106     S&
00107     S::_M_replace_safe(S::iterator, S::iterator, C*, C*); 
00108 
00109   template
00110     S&
00111     S::_M_replace_safe(S::iterator, S::iterator, const C*, const C*);  
00112 
00113   template 
00114     C* 
00115     S::_S_construct(S::iterator, S::iterator, 
00116             const allocator<C>&, forward_iterator_tag);
00117 
00118   template 
00119     C* 
00120     S::_S_construct(S::const_iterator, S::const_iterator, 
00121             const allocator<C>&, forward_iterator_tag);
00122 
00123   template
00124     C*
00125     S::_S_construct(C*, C*, const allocator<C>&, forward_iterator_tag);
00126 
00127   template
00128     C*
00129     S::_S_construct(const C*, const C*, const allocator<C>&,
00130             forward_iterator_tag);
00131 
00132   template
00133     void
00134     __destroy_aux<S*>(S*, S*, __false_type);
00135 }