diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2017-01-16 11:41:41 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2017-01-16 11:41:41 +0000 |
commit | b497fbc10a588b5b02c7f91246570b55795a2c5c (patch) | |
tree | 4fc90e9543c265f168bcbc3c0c00cb6313a32af1 | |
parent | 53426b63b3c99db36df3c83bdbd71d5f4f514de2 (diff) | |
download | gcc-b497fbc10a588b5b02c7f91246570b55795a2c5c.zip gcc-b497fbc10a588b5b02c7f91246570b55795a2c5c.tar.gz gcc-b497fbc10a588b5b02c7f91246570b55795a2c5c.tar.bz2 |
PR78702 fix accessibility of locale::facet::__shim
PR libstdc++/78702
* include/bits/locale_classes.h (locale::facet::__shim): Change from
private to protected.
* src/c++11/cxx11-shim_facets.cc (__shim_accessor): Define helper to
make locale::facet::__shim accessible.
From-SVN: r244491
-rw-r--r-- | libstdc++-v3/ChangeLog | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/locale_classes.h | 5 | ||||
-rw-r--r-- | libstdc++-v3/src/c++11/cxx11-shim_facets.cc | 20 |
3 files changed, 24 insertions, 9 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 998662a..7df1748 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2017-01-16 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/78702 + * include/bits/locale_classes.h (locale::facet::__shim): Change from + private to protected. + * src/c++11/cxx11-shim_facets.cc (__shim_accessor): Define helper to + make locale::facet::__shim accessible. + 2017-01-16 Ville Voutilainen <ville.voutilainen@gmail.com> PR libstdc++/78389 diff --git a/libstdc++-v3/include/bits/locale_classes.h b/libstdc++-v3/include/bits/locale_classes.h index 41adac6..b63e9c8 100644 --- a/libstdc++-v3/include/bits/locale_classes.h +++ b/libstdc++-v3/include/bits/locale_classes.h @@ -461,10 +461,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } } - class __shim; - const facet* _M_sso_shim(const id*) const; const facet* _M_cow_shim(const id*) const; + + protected: + class __shim; // For internal use only. }; diff --git a/libstdc++-v3/src/c++11/cxx11-shim_facets.cc b/libstdc++-v3/src/c++11/cxx11-shim_facets.cc index 9ad7300..b69959f 100644 --- a/libstdc++-v3/src/c++11/cxx11-shim_facets.cc +++ b/libstdc++-v3/src/c++11/cxx11-shim_facets.cc @@ -226,8 +226,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace // unnamed { + struct __shim_accessor : facet + { + using facet::__shim; // Redeclare protected member as public. + }; + using __shim = __shim_accessor::__shim; + template<typename _CharT> - struct numpunct_shim : std::numpunct<_CharT>, facet::__shim + struct numpunct_shim : std::numpunct<_CharT>, __shim { typedef typename numpunct<_CharT>::__cache_type __cache_type; @@ -251,7 +257,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; template<typename _CharT> - struct collate_shim : std::collate<_CharT>, facet::__shim + struct collate_shim : std::collate<_CharT>, __shim { typedef basic_string<_CharT> string_type; @@ -276,7 +282,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; template<typename _CharT> - struct time_get_shim : std::time_get<_CharT>, facet::__shim + struct time_get_shim : std::time_get<_CharT>, __shim { typedef typename std::time_get<_CharT>::iter_type iter_type; typedef typename std::time_get<_CharT>::char_type char_type; @@ -330,7 +336,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; template<typename _CharT, bool _Intl> - struct moneypunct_shim : std::moneypunct<_CharT, _Intl>, facet::__shim + struct moneypunct_shim : std::moneypunct<_CharT, _Intl>, __shim { typedef typename moneypunct<_CharT, _Intl>::__cache_type __cache_type; @@ -357,7 +363,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; template<typename _CharT> - struct money_get_shim : std::money_get<_CharT>, facet::__shim + struct money_get_shim : std::money_get<_CharT>, __shim { typedef typename std::money_get<_CharT>::iter_type iter_type; typedef typename std::money_get<_CharT>::char_type char_type; @@ -398,7 +404,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; template<typename _CharT> - struct money_put_shim : std::money_put<_CharT>, facet::__shim + struct money_put_shim : std::money_put<_CharT>, __shim { typedef typename std::money_put<_CharT>::iter_type iter_type; typedef typename std::money_put<_CharT>::char_type char_type; @@ -427,7 +433,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; template<typename _CharT> - struct messages_shim : std::messages<_CharT>, facet::__shim + struct messages_shim : std::messages<_CharT>, __shim { typedef messages_base::catalog catalog; typedef basic_string<_CharT> string_type; |