From 428319bb9a041a6e2dce755436b16e0dfdccf10e Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Sun, 5 Jun 2011 20:28:38 +0000 Subject: [PATCH] ptr_traits.h (pointer_traits): Fix typos. 2011-06-05 Jonathan Wakely * include/bits/ptr_traits.h (pointer_traits): Fix typos. * include/ext/pointer.h (pointer_traits): Add partial specialization for _Pointer_adapter. From-SVN: r174661 --- libstdc++-v3/ChangeLog | 6 ++++ libstdc++-v3/include/bits/ptr_traits.h | 9 +++--- libstdc++-v3/include/ext/pointer.h | 39 ++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c90eb5c3b28..2f485b1423d 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2011-06-05 Jonathan Wakely + + * include/bits/ptr_traits.h (pointer_traits): Fix typos. + * include/ext/pointer.h (pointer_traits): Add partial specialization + for _Pointer_adapter. + 2011-06-04 Jonathan Wakely * testsuite/util/testsuite_allocator.h (tracker_allocator::construct): diff --git a/libstdc++-v3/include/bits/ptr_traits.h b/libstdc++-v3/include/bits/ptr_traits.h index 342db12aff8..c83beadb149 100644 --- a/libstdc++-v3/include/bits/ptr_traits.h +++ b/libstdc++-v3/include/bits/ptr_traits.h @@ -106,8 +106,8 @@ _GLIBCXX_HAS_NESTED_TYPE(difference_type) /* TODO: remove second bool when alias templates are supported */ template::value, - bool = __ptrtr_rebind_helper2<_Tp, _Up>::value> + bool = __ptrtr_rebind_helper<_Tp, _Up>::__value, + bool = __ptrtr_rebind_helper2<_Tp, _Up>::__value> struct __ptrtr_rebind; template @@ -178,8 +178,9 @@ _GLIBCXX_HAS_NESTED_TYPE(difference_type) { typedef typename __ptrtr_rebind<_Ptr, _Up>::__type __type; }; // allocator_traits needs to use __rebind - template struct allocator_traits; - template class __ptrtr_rebind_helper2; + template friend struct allocator_traits; + template friend struct pointer_traits; + template friend class __ptrtr_rebind_helper2; }; /** diff --git a/libstdc++-v3/include/ext/pointer.h b/libstdc++-v3/include/ext/pointer.h index 158ae52e3b8..2dc1c398d1c 100644 --- a/libstdc++-v3/include/ext/pointer.h +++ b/libstdc++-v3/include/ext/pointer.h @@ -42,6 +42,9 @@ #include #include #include +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +# include +#endif namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) { @@ -567,4 +570,40 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + struct pointer_traits<__gnu_cxx::_Pointer_adapter<_Storage_policy>> + { + /// The pointer type + typedef __gnu_cxx::_Pointer_adapter<_Storage_policy> pointer; + /// The type pointed to + typedef typename pointer::element_type element_type; + /// Type used to represent the difference between two pointers + typedef typename pointer::difference_type difference_type; + + /* TODO: replace __rebind with alias template rebind */ + /* + template + using rebind<_Up> = typename __gnu_cxx::_Pointer_adapter< + typename pointer_traits<_Storage_policy>::rebind<_Up>> + */ + template + class __rebind + { + typedef pointer_traits<_Storage_policy> _Policy_traits; + typedef typename _Policy_traits::template __rebind<_Up>::__type + _Rebound_policy; + public: + typedef typename __gnu_cxx::_Pointer_adapter<_Rebound_policy> __type; + }; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace +#endif + #endif // _POINTER_H -- 2.30.2