diff options
author | Benjamin Kosnik <bkoz@redhat.com> | 2002-03-08 06:05:21 +0000 |
---|---|---|
committer | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2002-03-08 06:05:21 +0000 |
commit | 41b4d44baccc40bfbed0352aa1239ee71bb4bc95 (patch) | |
tree | 6b0d13fe85d6be6692c2000017d7c45ff306a270 | |
parent | 5faae4f77908932c7a11ecfc0e59bc6321f68cd5 (diff) | |
download | gcc-41b4d44baccc40bfbed0352aa1239ee71bb4bc95.tar.gz |
stl_alloc.h: Add extern implicit allocator instantiations.
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
-rw-r--r-- | libstdc++-v3/ChangeLog | 13 | ||||
-rw-r--r-- | libstdc++-v3/config/linker-map.gnu | 2 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/basic_string.tcc | 2 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/locale_facets.tcc | 242 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/stl_alloc.h | 5 | ||||
-rw-r--r-- | libstdc++-v3/src/locale-inst.cc | 310 | ||||
-rw-r--r-- | libstdc++-v3/src/locale.cc | 2 | ||||
-rw-r--r-- | libstdc++-v3/src/stl-inst.cc | 5 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/22_locale/operators.cc | 8 |
9 files changed, 451 insertions, 138 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index eaf39bfee43..4d0d91730ed 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -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> diff --git a/libstdc++-v3/config/linker-map.gnu b/libstdc++-v3/config/linker-map.gnu index 27c6f6617dc..71395527c42 100644 --- a/libstdc++-v3/config/linker-map.gnu +++ b/libstdc++-v3/config/linker-map.gnu @@ -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: *; }; - diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc index dce9b38fcb4..01a3fe6ea8c 100644 --- a/libstdc++-v3/include/bits/basic_string.tcc +++ b/libstdc++-v3/include/bits/basic_string.tcc @@ -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 diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index 8513f8b17f2..e08dc363a9d 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -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 diff --git a/libstdc++-v3/include/bits/stl_alloc.h b/libstdc++-v3/include/bits/stl_alloc.h index 7a4d9e9e4a6..4ff816be5e3 100644 --- a/libstdc++-v3/include/bits/stl_alloc.h +++ b/libstdc++-v3/include/bits/stl_alloc.h @@ -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 */ diff --git a/libstdc++-v3/src/locale-inst.cc b/libstdc++-v3/src/locale-inst.cc index 324b07e9369..9e449e66bda 100644 --- a/libstdc++-v3/src/locale-inst.cc +++ b/libstdc++-v3/src/locale-inst.cc @@ -43,126 +43,124 @@ 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&); @@ -219,6 +206,18 @@ namespace std 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&); @@ -252,78 +259,165 @@ namespace std 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&); 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*, diff --git a/libstdc++-v3/src/locale.cc b/libstdc++-v3/src/locale.cc index 43e910333e9..d2fd7631603 100644 --- a/libstdc++-v3/src/locale.cc +++ b/libstdc++-v3/src/locale.cc @@ -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; diff --git a/libstdc++-v3/src/stl-inst.cc b/libstdc++-v3/src/stl-inst.cc index eaf55599f2b..94d26b33d23 100644 --- a/libstdc++-v3/src/stl-inst.cc +++ b/libstdc++-v3/src/stl-inst.cc @@ -34,11 +34,12 @@ #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 diff --git a/libstdc++-v3/testsuite/22_locale/operators.cc b/libstdc++-v3/testsuite/22_locale/operators.cc index 9037dd872be..f0e40d4a116 100644 --- a/libstdc++-v3/testsuite/22_locale/operators.cc +++ b/libstdc++-v3/testsuite/22_locale/operators.cc @@ -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; } |