aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2008-09-10 21:34:38 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2008-09-10 21:34:38 +0000
commit08376e28d4db9f3c3fdf33de39c77ea881e47c73 (patch)
treee4a9d3d087baab3772c5dfd1733e16f2bb0eee79
parent5bcb0cc36879d3f65d2d78a6ff0c6383fba47dd5 (diff)
downloadgcc-08376e28d4db9f3c3fdf33de39c77ea881e47c73.zip
gcc-08376e28d4db9f3c3fdf33de39c77ea881e47c73.tar.gz
gcc-08376e28d4db9f3c3fdf33de39c77ea881e47c73.tar.bz2
ctype.cc (use_facet<ctype<char> >, [...]): Remove specializations.
2008-09-10 Paolo Carlini <paolo.carlini@oracle.com> * src/ctype.cc (use_facet<ctype<char> >, use_facet<ctype<wchar_t>): Remove specializations. * src/locale-inst.cc (use_facet<ctype<C> >): Instantiate. * include/bits/locale_facets.tcc (use_facet<ctype<char> >, use_facet<ctype<wchar_t>): Declare as extern template. * include/bits/locale_facets.h (use_facet<ctype<char> >, use_facet<ctype<wchar_t>): Do not declare as specializations. From-SVN: r140251
-rw-r--r--libstdc++-v3/ChangeLog10
-rw-r--r--libstdc++-v3/include/bits/locale_facets.h8
-rw-r--r--libstdc++-v3/include/bits/locale_facets.tcc10
-rw-r--r--libstdc++-v3/src/ctype.cc20
-rw-r--r--libstdc++-v3/src/locale-inst.cc7
5 files changed, 24 insertions, 31 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 03371b4..8b7cd46 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,15 @@
2008-09-10 Paolo Carlini <paolo.carlini@oracle.com>
+ * src/ctype.cc (use_facet<ctype<char> >, use_facet<ctype<wchar_t>):
+ Remove specializations.
+ * src/locale-inst.cc (use_facet<ctype<C> >): Instantiate.
+ * include/bits/locale_facets.tcc (use_facet<ctype<char> >,
+ use_facet<ctype<wchar_t>): Declare as extern template.
+ * include/bits/locale_facets.h (use_facet<ctype<char> >,
+ use_facet<ctype<wchar_t>): Do not declare as specializations.
+
+2008-09-10 Paolo Carlini <paolo.carlini@oracle.com>
+
* config/locale/darwin/ctype_members.cc (ctype<char>::_M_narrow_init,
ctype<char>::_M_widen_init): Don't define here.
* config/locale/gnu/ctype_members.cc: Likewise.
diff --git a/libstdc++-v3/include/bits/locale_facets.h b/libstdc++-v3/include/bits/locale_facets.h
index 340d21d..2581660 100644
--- a/libstdc++-v3/include/bits/locale_facets.h
+++ b/libstdc++-v3/include/bits/locale_facets.h
@@ -1165,10 +1165,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
void _M_widen_init() const;
};
- template<>
- const ctype<char>&
- use_facet<ctype<char> >(const locale& __loc);
-
#ifdef _GLIBCXX_USE_WCHAR_T
// 22.2.1.3 ctype<wchar_t> specialization
/**
@@ -1470,10 +1466,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
void
_M_initialize_ctype();
};
-
- template<>
- const ctype<wchar_t>&
- use_facet<ctype<wchar_t> >(const locale& __loc);
#endif //_GLIBCXX_USE_WCHAR_T
/// class ctype_byname [22.2.1.2].
diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc
index 744e373..4961025 100644
--- a/libstdc++-v3/include/bits/locale_facets.tcc
+++ b/libstdc++-v3/include/bits/locale_facets.tcc
@@ -1,7 +1,7 @@
// Locale support -*- C++ -*-
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007
+// 2006, 2007, 2008
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -1284,6 +1284,10 @@ _GLIBCXX_END_LDBL_NAMESPACE
extern template class ctype_byname<char>;
extern template
+ const ctype<char>&
+ use_facet<ctype<char> >(const locale&);
+
+ extern template
const numpunct<char>&
use_facet<numpunct<char> >(const locale&);
@@ -1319,6 +1323,10 @@ _GLIBCXX_END_LDBL_NAMESPACE
extern template class ctype_byname<wchar_t>;
extern template
+ const ctype<wchar_t>&
+ use_facet<ctype<wchar_t> >(const locale&);
+
+ extern template
const numpunct<wchar_t>&
use_facet<numpunct<wchar_t> >(const locale&);
diff --git a/libstdc++-v3/src/ctype.cc b/libstdc++-v3/src/ctype.cc
index cb9c853..e979150 100644
--- a/libstdc++-v3/src/ctype.cc
+++ b/libstdc++-v3/src/ctype.cc
@@ -53,26 +53,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
locale::id ctype<wchar_t>::id;
#endif
- template<>
- const ctype<char>&
- use_facet<ctype<char> >(const locale& __loc)
- {
- size_t __i = ctype<char>::id._M_id();
- const locale::_Impl* __tmp = __loc._M_impl;
- return static_cast<const ctype<char>&>(*(__tmp->_M_facets[__i]));
- }
-
-#ifdef _GLIBCXX_USE_WCHAR_T
- template<>
- const ctype<wchar_t>&
- use_facet<ctype<wchar_t> >(const locale& __loc)
- {
- size_t __i = ctype<wchar_t>::id._M_id();
- const locale::_Impl* __tmp = __loc._M_impl;
- return static_cast<const ctype<wchar_t>&>(*(__tmp->_M_facets[__i]));
- }
-#endif
-
// XXX At some point, just rename this file to ctype_configure_char.cc
// and compile it as a separate file instead of including it here.
// Platform-specific initialization code for ctype tables.
diff --git a/libstdc++-v3/src/locale-inst.cc b/libstdc++-v3/src/locale-inst.cc
index 790e614..8d2ac77 100644
--- a/libstdc++-v3/src/locale-inst.cc
+++ b/libstdc++-v3/src/locale-inst.cc
@@ -1,6 +1,6 @@
// Locale support -*- C++ -*-
-// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -192,7 +192,10 @@ _GLIBCXX_END_LDBL_NAMESPACE
template class collate_byname<C>;
// use_facet
- // NB: use_facet<ctype> is specialized
+ template
+ const ctype<C>&
+ use_facet<ctype<C> >(const locale&);
+
template
const codecvt<C, char, mbstate_t>&
use_facet<codecvt<C, char, mbstate_t> >(const locale&);