]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
stl_alloc.h: Add extern implicit allocator instantiations.
authorBenjamin Kosnik <bkoz@redhat.com>
Fri, 8 Mar 2002 06:05:21 +0000 (06:05 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Fri, 8 Mar 2002 06:05:21 +0000 (06:05 +0000)
2002-03-07  Benjamin Kosnik  <bkoz@redhat.com>

* include/bits/stl_alloc.h: Add extern implicit allocator
instantiations.
* include/bits/basic_string.tcc: Tweak.
* include/bits/locale_facets.tcc: Remove default args. Add
has_facet, use_facet extern instantiations.
* src/stl-inst.cc: Add explicit instantiation.
* src/locale-inst.cc: Clean. Remove locale member template
instantiations.

* testsuite/22_locale/operators.cc (test02): Enable.

From-SVN: r50426

libstdc++-v3/ChangeLog
libstdc++-v3/config/linker-map.gnu
libstdc++-v3/include/bits/basic_string.tcc
libstdc++-v3/include/bits/locale_facets.tcc
libstdc++-v3/include/bits/stl_alloc.h
libstdc++-v3/src/locale-inst.cc
libstdc++-v3/src/locale.cc
libstdc++-v3/src/stl-inst.cc
libstdc++-v3/testsuite/22_locale/operators.cc

index eaf39bfee43a5e3487837c99856d9e7b2c7b00ab..4d0d91730ed22458c714cc6815ed9a00e0d2d94e 100644 (file)
@@ -1,3 +1,16 @@
+2002-03-07  Benjamin Kosnik  <bkoz@redhat.com>
+
+       * include/bits/stl_alloc.h: Add extern implicit allocator
+       instantiations.
+       * include/bits/basic_string.tcc: Tweak.
+       * include/bits/locale_facets.tcc: Remove default args. Add
+       has_facet, use_facet extern instantiations.
+       * src/stl-inst.cc: Add explicit instantiation.
+       * src/locale-inst.cc: Clean. Remove locale member template
+       instantiations.
+
+       * testsuite/22_locale/operators.cc (test02): Enable.
+
 2002-03-06  Benjamin Kosnik  <bkoz@redhat.com>
            Stephen M. Webb  <stephen.webb@bregmasoft.com>
 
index 27c6f6617dc9293cfc63149d54d5ea973024ce95..71395527c42a0c6d2dccdeb5d701d2191b1a2406 100644 (file)
@@ -37,6 +37,7 @@ GLIBCPP_3.1 {
     };
 
     # Names not in an 'extern' block are mangled names.
+    _ZSt9has_facet*;
 
     # operator new(unsigned)
     _Znwj;
@@ -101,4 +102,3 @@ CXXABI_1 {
   local:
     *;
 };
-
index dce9b38fcb498ea475b7d58410017c8d05a6d290..01a3fe6ea8c6ec0901c389daa60b2f74a0422d8c 100644 (file)
@@ -945,7 +945,7 @@ namespace std
   // which are defined via explicit instantiations elsewhere.  
   // NB: This syntax is a GNU extension.
   extern template class basic_string<char>;
-   extern template 
+  extern template 
     basic_istream<char>& 
     operator>>(basic_istream<char>&, string&);
   extern template 
index 8513f8b17f2ed1095ec8955820aa4a25eab0eefa..e08dc363a9d3ce529e50606942a8563051a794fa 100644 (file)
@@ -2061,36 +2061,38 @@ namespace std
   // Inhibit implicit instantiations for required instantiations,
   // which are defined via explicit instantiations elsewhere.  
   // NB: This syntax is a GNU extension.
+  extern template class vector<locale::facet*>;
+
   extern template class moneypunct<char, false>;
   extern template class moneypunct<char, true>;
   extern template class moneypunct_byname<char, false>;
   extern template class moneypunct_byname<char, true>;
-  extern template class money_get<char, istreambuf_iterator<char> >;
-  extern template class money_put<char, ostreambuf_iterator<char> >;
+  extern template class money_get<char>;
+  extern template class money_put<char>;
   extern template class moneypunct<wchar_t, false>;
   extern template class moneypunct<wchar_t, true>;
   extern template class moneypunct_byname<wchar_t, false>;
   extern template class moneypunct_byname<wchar_t, true>;
-  extern template class money_get<wchar_t, istreambuf_iterator<wchar_t> >;
-  extern template class money_put<wchar_t, ostreambuf_iterator<wchar_t> >;
+  extern template class money_get<wchar_t>;
+  extern template class money_put<wchar_t>;
   extern template class numpunct<char>;
   extern template class numpunct_byname<char>;
-  extern template class num_get<char, istreambuf_iterator<char> >;
-  extern template class num_put<char, ostreambuf_iterator<char> >; 
+  extern template class num_get<char>;
+  extern template class num_put<char>; 
   extern template class numpunct<wchar_t>;
   extern template class numpunct_byname<wchar_t>;
-  extern template class num_get<wchar_t, istreambuf_iterator<wchar_t> >;
-  extern template class num_put<wchar_t, ostreambuf_iterator<wchar_t> >;
+  extern template class num_get<wchar_t>;
+  extern template class num_put<wchar_t>;
   extern template class __timepunct<char>;
-  extern template class time_put<char, ostreambuf_iterator<char> >;
-  extern template class time_put_byname<char, ostreambuf_iterator<char> >;
-  extern template class time_get<char, istreambuf_iterator<char> >;
-  extern template class time_get_byname<char, istreambuf_iterator<char> >;
+  extern template class time_put<char>;
+  extern template class time_put_byname<char>;
+  extern template class time_get<char>;
+  extern template class time_get_byname<char>;
   extern template class __timepunct<wchar_t>;
-  extern template class time_put<wchar_t, ostreambuf_iterator<wchar_t> >;
-  extern template class time_put_byname<wchar_t, ostreambuf_iterator<wchar_t> >;
-  extern template class time_get<wchar_t, istreambuf_iterator<wchar_t> >;
-  extern template class time_get_byname<wchar_t, istreambuf_iterator<wchar_t> >;
+  extern template class time_put<wchar_t>;
+  extern template class time_put_byname<wchar_t>;
+  extern template class time_get<wchar_t>;
+  extern template class time_get_byname<wchar_t>;
   extern template class messages<char>;
   extern template class messages_byname<char>;
   extern template class messages<wchar_t>;
@@ -2103,13 +2105,217 @@ namespace std
   extern template class collate_byname<char>;
   extern template class collate<wchar_t>;
   extern template class collate_byname<wchar_t>;
-} // namespace std
 
-#endif
+  extern template
+    const codecvt<char, char, mbstate_t>& 
+    use_facet<codecvt<char, char, mbstate_t> >(const locale&);
+
+  extern template
+    const collate<char>& 
+    use_facet<collate<char> >(const locale&);
+
+  extern template
+    const numpunct<char>& 
+    use_facet<numpunct<char> >(const locale&);
+
+  extern template 
+    const num_put<char>& 
+    use_facet<num_put<char> >(const locale&);
+
+  extern template 
+    const num_get<char>& 
+    use_facet<num_get<char> >(const locale&);
+
+  extern template
+    const moneypunct<char, true>& 
+    use_facet<moneypunct<char, true> >(const locale&);
+
+  extern template
+    const moneypunct<char, false>& 
+    use_facet<moneypunct<char, false> >(const locale&);
+
+  extern template 
+    const money_put<char>& 
+    use_facet<money_put<char> >(const locale&);
+
+  extern template 
+    const money_get<char>& 
+    use_facet<money_get<char> >(const locale&);
+
+  extern template
+    const __timepunct<char>& 
+    use_facet<__timepunct<char> >(const locale&);
+
+  extern template 
+    const time_put<char>& 
+    use_facet<time_put<char> >(const locale&);
+
+  extern template 
+    const time_get<char>& 
+    use_facet<time_get<char> >(const locale&);
+
+  extern template 
+    const messages<char>& 
+    use_facet<messages<char> >(const locale&);
+
+  extern template
+    const codecvt<wchar_t, char, mbstate_t>& 
+    use_facet<codecvt<wchar_t, char, mbstate_t> >(locale const&);
+
+  extern template
+    const collate<wchar_t>& 
+    use_facet<collate<wchar_t> >(const locale&);
+
+  extern template
+    const numpunct<wchar_t>& 
+    use_facet<numpunct<wchar_t> >(const locale&);
+
+  extern template 
+    const num_put<wchar_t>& 
+    use_facet<num_put<wchar_t> >(const locale&);
+
+  extern template 
+    const num_get<wchar_t>& 
+    use_facet<num_get<wchar_t> >(const locale&);
 
+  extern template
+    const moneypunct<wchar_t, true>& 
+    use_facet<moneypunct<wchar_t, true> >(const locale&);
 
+  extern template
+    const moneypunct<wchar_t, false>& 
+    use_facet<moneypunct<wchar_t, false> >(const locale&);
+  extern template 
+    const money_put<wchar_t>& 
+    use_facet<money_put<wchar_t> >(const locale&);
+
+  extern template 
+    const money_get<wchar_t>& 
+    use_facet<money_get<wchar_t> >(const locale&);
+
+  extern template
+    const __timepunct<wchar_t>& 
+    use_facet<__timepunct<wchar_t> >(const locale&);
+
+  extern template 
+    const time_put<wchar_t>& 
+    use_facet<time_put<wchar_t> >(const locale&);
+
+  extern template 
+    const time_get<wchar_t>& 
+    use_facet<time_get<wchar_t> >(const locale&);
+
+  extern template 
+    const messages<wchar_t>& 
+    use_facet<messages<wchar_t> >(const locale&);
+
+
+  extern template 
+    bool
+    has_facet<ctype<char> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<codecvt<char, char, mbstate_t> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<collate<char> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<numpunct<char> >(const locale&);
 
+  extern template 
+    bool
+    has_facet<num_put<char> >(const locale&);
 
+  extern template 
+    bool
+    has_facet<num_get<char> >(const locale&);
 
+  extern template 
+    bool
+    has_facet<moneypunct<char> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<money_put<char> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<money_get<char> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<__timepunct<char> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<time_put<char> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<time_get<char> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<messages<char> >(const locale&);
+
+ extern template 
+    bool
+    has_facet<ctype<wchar_t> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<collate<wchar_t> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<numpunct<wchar_t> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<num_put<wchar_t> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<num_get<wchar_t> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<moneypunct<wchar_t> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<money_put<wchar_t> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<money_get<wchar_t> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<__timepunct<wchar_t> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<time_put<wchar_t> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<time_get<wchar_t> >(const locale&);
+
+  extern template 
+    bool
+    has_facet<messages<wchar_t> >(const locale&);
+} // namespace std
+
+#endif
 
 
index 7a4d9e9e4a6b6f6b5d1994e5d84a835f57b78b54..4ff816be5e33c8f8d4a89852fe30c5bdeeae649c 100644 (file)
@@ -922,6 +922,11 @@ struct _Alloc_traits<_Tp, __allocator<_Tp1, __debug_alloc<_Alloc> > >
 };
 //@}
 
+  // Inhibit implicit instantiations for required instantiations,
+  // which are defined via explicit instantiations elsewhere.  
+  // NB: This syntax is a GNU extension.
+  extern template class allocator<char>;
+  extern template class allocator<wchar_t>;
 } // namespace std
 
 #endif /* __GLIBCPP_INTERNAL_ALLOC_H */
index 324b07e93698917e82ae9ebbd608acb89a795d6f..9e449e66bda8b3c55ef69095c133c86438c3b566 100644 (file)
 
 namespace std
 {
-  typedef ostreambuf_iterator<char> obuf_iterator;
-  typedef istreambuf_iterator<char> ibuf_iterator;
-  typedef ostreambuf_iterator<wchar_t> wobuf_iterator;
-  typedef istreambuf_iterator<wchar_t> wibuf_iterator;
-
   // moneypunct, money_get, and money_put
   template class moneypunct<char, false>;
   template class moneypunct<char, true>;
   template class moneypunct_byname<char, false>;
   template class moneypunct_byname<char, true>;
-  template class money_get<char, ibuf_iterator>;
-  template class money_put<char, obuf_iterator>;
+  template class money_get<char, istreambuf_iterator<char> >;
+  template class money_put<char, ostreambuf_iterator<char> >;
 
 #ifdef _GLIBCPP_USE_WCHAR_T
   template class moneypunct<wchar_t, false>;
   template class moneypunct<wchar_t, true>;
   template class moneypunct_byname<wchar_t, false>;
   template class moneypunct_byname<wchar_t, true>;
-  template class money_get<wchar_t, wibuf_iterator>;
-  template class money_put<wchar_t, wobuf_iterator>;
+  template class money_get<wchar_t, istreambuf_iterator<wchar_t> >;
+  template class money_put<wchar_t, ostreambuf_iterator<wchar_t> >;
 #endif
 
   // numpunct, numpunct_byname, num_get, and num_put
   template class numpunct<char>;
   template class numpunct_byname<char>;
-  template class num_get<char, ibuf_iterator>;
-  template class num_put<char, obuf_iterator>; 
+  template class num_get<char, istreambuf_iterator<char> >;
+  template class num_put<char, ostreambuf_iterator<char> >; 
   template
-    obuf_iterator
-    num_put<char, obuf_iterator>::
-    _M_convert_int(obuf_iterator, ios_base&, char, char, char, long) const;
+    ostreambuf_iterator<char>
+    num_put<char, ostreambuf_iterator<char> >::
+    _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char, 
+                  long) const;
 
   template
-    obuf_iterator
-    num_put<char, obuf_iterator>::
-    _M_convert_int(obuf_iterator, ios_base&, char, char, char, 
+    ostreambuf_iterator<char>
+    num_put<char, ostreambuf_iterator<char> >::
+    _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char, 
                   unsigned long) const;
 
 #ifdef _GLIBCPP_USE_LONG_LONG
   template
-    obuf_iterator
-    num_put<char, obuf_iterator>::
-    _M_convert_int(obuf_iterator, ios_base&, char, char, char, 
+    ostreambuf_iterator<char>
+    num_put<char, ostreambuf_iterator<char> >::
+    _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char, 
                   long long) const;
 
   template
-    obuf_iterator
-    num_put<char, obuf_iterator>::
-    _M_convert_int(obuf_iterator, ios_base&, char, char, char,
+    ostreambuf_iterator<char>
+    num_put<char, ostreambuf_iterator<char> >::
+    _M_convert_int(ostreambuf_iterator<char>, ios_base&, char, char, char,
                   unsigned long long) const;
 #endif
 
   template
-    obuf_iterator
-    num_put<char, obuf_iterator>::
-    _M_convert_float(obuf_iterator, ios_base&, char, char, double) const;
+    ostreambuf_iterator<char>
+    num_put<char, ostreambuf_iterator<char> >::
+    _M_convert_float(ostreambuf_iterator<char>, ios_base&, char, char, 
+                    double) const;
 
   template
-    obuf_iterator
-    num_put<char, obuf_iterator>::
-    _M_convert_float(obuf_iterator, ios_base&, char, char, 
+    ostreambuf_iterator<char>
+    num_put<char, ostreambuf_iterator<char> >::
+    _M_convert_float(ostreambuf_iterator<char>, ios_base&, char, char, 
                    long double) const;
 
 #ifdef _GLIBCPP_USE_WCHAR_T
   template class numpunct<wchar_t>;
   template class numpunct_byname<wchar_t>;
-  template class num_get<wchar_t, wibuf_iterator>;
-  template class num_put<wchar_t, wobuf_iterator>;
+  template class num_get<wchar_t, istreambuf_iterator<wchar_t> >;
+  template class num_put<wchar_t, ostreambuf_iterator<wchar_t> >;
 
   template
-    wobuf_iterator
-    num_put<wchar_t, wobuf_iterator>::
-    _M_convert_int(wobuf_iterator, ios_base&, wchar_t, char, char, long) const;
+    ostreambuf_iterator<wchar_t>
+    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
+    _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char, 
+                  char, long) const;
 
   template
-    wobuf_iterator
-    num_put<wchar_t, wobuf_iterator>::
-    _M_convert_int(wobuf_iterator, ios_base&, wchar_t, char, char,
-                  unsigned long) const;
+    ostreambuf_iterator<wchar_t>
+    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
+    _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char, 
+                  char, unsigned long) const;
 
 #ifdef _GLIBCPP_USE_LONG_LONG
   template
-    wobuf_iterator
-    num_put<wchar_t, wobuf_iterator>::
-    _M_convert_int(wobuf_iterator, ios_base&, wchar_t, char, char,
-                  long long) const;
+    ostreambuf_iterator<wchar_t>
+    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
+    _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char, 
+                  char, long long) const;
 
   template
-    wobuf_iterator
-    num_put<wchar_t, wobuf_iterator>::
-    _M_convert_int(wobuf_iterator, ios_base&, wchar_t, char, char,
-                  unsigned long long) const;
+    ostreambuf_iterator<wchar_t>
+    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
+    _M_convert_int(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char, 
+                  char, unsigned long long) const;
 #endif
 
   template
-    wobuf_iterator
-    num_put<wchar_t, wobuf_iterator>::
-    _M_convert_float(wobuf_iterator, ios_base&, wchar_t, char, 
+    ostreambuf_iterator<wchar_t>
+    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
+    _M_convert_float(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char, 
                     double) const;
 
   template
-    wobuf_iterator
-    num_put<wchar_t, wobuf_iterator>::
-    _M_convert_float(wobuf_iterator, ios_base&, wchar_t, char, 
+    ostreambuf_iterator<wchar_t>
+    num_put<wchar_t, ostreambuf_iterator<wchar_t> >::
+    _M_convert_float(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, char, 
                     long double) const;
 #endif
 
   // time_get and time_put
   template class __timepunct<char>;
-  template class time_put<char, obuf_iterator>;
-  template class time_put_byname<char, obuf_iterator>;
-  template class time_get<char, ibuf_iterator>;
-  template class time_get_byname<char, ibuf_iterator>;
+  template class time_put<char, ostreambuf_iterator<char> >;
+  template class time_put_byname<char, ostreambuf_iterator<char> >;
+  template class time_get<char, istreambuf_iterator<char> >;
+  template class time_get_byname<char, istreambuf_iterator<char> >;
 
 #ifdef _GLIBCPP_USE_WCHAR_T
   template class __timepunct<wchar_t>;
-  template class time_put<wchar_t, wobuf_iterator>;
-  template class time_put_byname<wchar_t, wobuf_iterator>;
-  template class time_get<wchar_t, wibuf_iterator>;
-  template class time_get_byname<wchar_t, wibuf_iterator>;
+  template class time_put<wchar_t, ostreambuf_iterator<wchar_t> >;
+  template class time_put_byname<wchar_t, ostreambuf_iterator<wchar_t> >;
+  template class time_get<wchar_t, istreambuf_iterator<wchar_t> >;
+  template class time_get_byname<wchar_t, istreambuf_iterator<wchar_t> >;
 #endif
 
   // messages
@@ -198,18 +196,7 @@ namespace std
 #endif
     
   // use_facet
-  template
-    const numpunct<char>& 
-    use_facet<numpunct<char> >(const locale&);
-
-  template 
-    const num_put<char, obuf_iterator >& 
-    use_facet<num_put<char, obuf_iterator> >(const locale&);
-
-  template 
-    const num_get<char, ibuf_iterator >& 
-    use_facet<num_get<char, ibuf_iterator> >(const locale&);
-
+  // NB: use_facet<ctype> is specialized
   template
     const codecvt<char, char, mbstate_t>& 
     use_facet<codecvt<char, char, mbstate_t> >(const locale&);
@@ -218,6 +205,18 @@ namespace std
     const collate<char>& 
     use_facet<collate<char> >(const locale&);
 
+  template
+    const numpunct<char>& 
+    use_facet<numpunct<char> >(const locale&);
+
+  template 
+    const num_put<char>& 
+    use_facet<num_put<char> >(const locale&);
+
+  template 
+    const num_get<char>& 
+    use_facet<num_get<char> >(const locale&);
+
   template
     const moneypunct<char, true>& 
     use_facet<moneypunct<char, true> >(const locale&);
@@ -226,23 +225,31 @@ namespace std
     const moneypunct<char, false>& 
     use_facet<moneypunct<char, false> >(const locale&);
 
+  template 
+    const money_put<char>& 
+    use_facet<money_put<char> >(const locale&);
+
+  template 
+    const money_get<char>& 
+    use_facet<money_get<char> >(const locale&);
+
   template
     const __timepunct<char>& 
     use_facet<__timepunct<char> >(const locale&);
 
-#ifdef _GLIBCPP_USE_WCHAR_T
-  template
-    const numpunct<wchar_t>& 
-    use_facet<numpunct<wchar_t> >(const locale&);
+  template 
+    const time_put<char>& 
+    use_facet<time_put<char> >(const locale&);
 
   template 
-    const num_put<wchar_t, wobuf_iterator>& 
-    use_facet<num_put<wchar_t, wobuf_iterator> >(const locale&);
+    const time_get<char>& 
+    use_facet<time_get<char> >(const locale&);
 
   template 
-    const num_get<wchar_t, wibuf_iterator>& 
-    use_facet<num_get<wchar_t, wibuf_iterator> >(const locale&);
+    const messages<char>& 
+    use_facet<messages<char> >(const locale&);
 
+#ifdef _GLIBCPP_USE_WCHAR_T
   template
     const codecvt<wchar_t, char, mbstate_t>& 
     use_facet<codecvt<wchar_t, char, mbstate_t> >(locale const&);
@@ -251,6 +258,18 @@ namespace std
     const collate<wchar_t>& 
     use_facet<collate<wchar_t> >(const locale&);
 
+  template
+    const numpunct<wchar_t>& 
+    use_facet<numpunct<wchar_t> >(const locale&);
+
+  template 
+    const num_put<wchar_t>& 
+    use_facet<num_put<wchar_t> >(const locale&);
+
+  template 
+    const num_get<wchar_t>& 
+    use_facet<num_get<wchar_t> >(const locale&);
+
   template
     const moneypunct<wchar_t, true>& 
     use_facet<moneypunct<wchar_t, true> >(const locale&);
@@ -258,72 +277,147 @@ namespace std
   template
     const moneypunct<wchar_t, false>& 
     use_facet<moneypunct<wchar_t, false> >(const locale&);
+  template 
+    const money_put<wchar_t>& 
+    use_facet<money_put<wchar_t> >(const locale&);
+
+  template 
+    const money_get<wchar_t>& 
+    use_facet<money_get<wchar_t> >(const locale&);
 
   template
     const __timepunct<wchar_t>& 
     use_facet<__timepunct<wchar_t> >(const locale&);
+
+  template 
+    const time_put<wchar_t>& 
+    use_facet<time_put<wchar_t> >(const locale&);
+
+  template 
+    const time_get<wchar_t>& 
+    use_facet<time_get<wchar_t> >(const locale&);
+
+  template 
+    const messages<wchar_t>& 
+    use_facet<messages<wchar_t> >(const locale&);
 #endif
 
   // has_facet
+  template 
+    bool
+    has_facet<ctype<char> >(const locale&);
+
+  template 
+    bool
+    has_facet<codecvt<char, char, mbstate_t> >(const locale&);
+
+  template 
+    bool
+    has_facet<collate<char> >(const locale&);
+
   template 
     bool
     has_facet<numpunct<char> >(const locale&);
+
   template 
     bool
     has_facet<num_put<char> >(const locale&);
+
   template 
     bool
     has_facet<num_get<char> >(const locale&);
+
   template 
     bool
-    has_facet<ctype<char> >(const locale&);
+    has_facet<moneypunct<char> >(const locale&);
+
+  template 
+    bool
+    has_facet<money_put<char> >(const locale&);
+
+  template 
+    bool
+    has_facet<money_get<char> >(const locale&);
+
+  template 
+    bool
+    has_facet<__timepunct<char> >(const locale&);
+
+  template 
+    bool
+    has_facet<time_put<char> >(const locale&);
+
+  template 
+    bool
+    has_facet<time_get<char> >(const locale&);
+
+  template 
+    bool
+    has_facet<messages<char> >(const locale&);
 
 #ifdef _GLIBCPP_USE_WCHAR_T
+ template 
+    bool
+    has_facet<ctype<wchar_t> >(const locale&);
+
+  template 
+    bool
+    has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);
+
+  template 
+    bool
+    has_facet<collate<wchar_t> >(const locale&);
+
   template 
     bool
     has_facet<numpunct<wchar_t> >(const locale&);
+
   template 
     bool
     has_facet<num_put<wchar_t> >(const locale&);
+
   template 
     bool
     has_facet<num_get<wchar_t> >(const locale&);
+
   template 
     bool
-    has_facet<ctype<wchar_t> >(const locale&);
-#endif
+    has_facet<moneypunct<wchar_t> >(const locale&);
 
-  //
-  // iterator
-  //
-  typedef vector<locale::facet*> vec_pfacet;
   template 
-    void 
-    vec_pfacet::
-    insert(vec_pfacet::iterator, vec_pfacet::size_type, 
-          const vec_pfacet::value_type&);
+    bool
+    has_facet<money_put<wchar_t> >(const locale&);
+
   template 
-    void 
-    vec_pfacet::
-    _M_fill_insert(vec_pfacet::iterator, vec_pfacet::size_type, 
-                  const vec_pfacet::value_type&);
+    bool
+    has_facet<money_get<wchar_t> >(const locale&);
 
+  template 
+    bool
+    has_facet<__timepunct<wchar_t> >(const locale&);
 
-  //
-  // locale
-  //
-  typedef istreambuf_iterator<char, char_traits<char> > istreambuf_iter;
-  typedef ostreambuf_iterator<char, char_traits<char> > ostreambuf_iter;
+  template 
+    bool
+    has_facet<time_put<wchar_t> >(const locale&);
 
-#ifdef _GLIBCPP_USE_WCHAR_T
-  typedef istreambuf_iterator<wchar_t, char_traits<wchar_t> > wistreambuf_iter;
-  typedef ostreambuf_iterator<wchar_t, char_traits<wchar_t> > wostreambuf_iter;
-#endif
+  template 
+    bool
+    has_facet<time_get<wchar_t> >(const locale&);
 
   template 
     bool
-    locale::operator()(const string&, const string&) const;
+    has_facet<messages<wchar_t> >(const locale&);
+#endif
+
+  // iterator
+  typedef vector<locale::facet*> vec_pfacet;
+  template class vector<locale::facet*>;
+  template class __normal_iterator<locale::facet**, vector<locale::facet*> >;
+  template class __normal_iterator<locale::facet* const*,
+                                   vector<locale::facet*> >;
 
+  // locale
   template
     char*
     __add_grouping<char>(char*, char, char const*, char const*, 
@@ -344,12 +438,6 @@ namespace std
                                    streamsize, streamsize, const bool);
 
 #ifdef _GLIBCPP_USE_WCHAR_T
-  template 
-    bool
-    locale::operator()(const wstring&, const wstring&) const;
-
-  typedef ostreambuf_iterator<wchar_t> wostreambuf_iter;
-
   template
     wchar_t*
     __add_grouping<wchar_t>(wchar_t*, wchar_t, char const*, char const*, 
index 43e910333e9d7241e11ed3c3e0b559dede20142a..d2fd763160316331d3646491120e144b082018d4 100644 (file)
@@ -63,7 +63,7 @@ namespace std
   const size_t                         locale::_S_num_categories;
   const size_t                         locale::_S_num_facets;
 
-  // Definitions for locale::id of standard facets
+  // Definitions for locale::id of standard facets that are specialized.
   locale::id ctype<char>::id;
   locale::id codecvt<char, char, mbstate_t>::id;
 
index eaf55599f2b52068fdd1a19fea83e6152d4113fa..94d26b33d2375456c0755fbf1c32cdafa6821ac5 100644 (file)
 #include <bits/c++config.h>
 #include <memory>
 #include <vector>
-#include <ostream>
-#include <map>
 
 namespace std
 {
+  template class allocator<char>;
+  template class allocator<wchar_t>;
+
   template class __malloc_alloc_template<0>;
 
 #ifndef __USE_MALLOC
index 9037dd872be24cbd7b0ccb28594040c3d44c3914..f0e40d4a1165372bdd2e0826ccf7a0d82d289ab0 100644 (file)
@@ -1,6 +1,6 @@
 // 2000-09-11 Benjamin Kosnik <bkoz@redhat.com>
 
-// Copyright (C) 2000, 2001 Free Software Foundation
+// Copyright (C) 2000, 2001, 2002 Free Software Foundation
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -47,9 +47,9 @@ void test01()
 }
 
 // bool operator()(const string_type&, const string_type&) const
-typedef std::collate<char> ccollate;
 long gnu_count;
-class gnu_collate: public ccollate 
+
+class gnu_collate: public std::collate<char>
 { 
 protected:
   virtual int
@@ -79,7 +79,7 @@ void test02()
 int main ()
 {
   test01();
-
+  test02();
   return 0;
 }