ptr_traits.h (pointer_traits): Fix typos.
authorJonathan Wakely <jwakely.gcc@gmail.com>
Sun, 5 Jun 2011 20:28:38 +0000 (20:28 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Sun, 5 Jun 2011 20:28:38 +0000 (21:28 +0100)
2011-06-05  Jonathan Wakely  <jwakely.gcc@gmail.com>

* 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
libstdc++-v3/include/bits/ptr_traits.h
libstdc++-v3/include/ext/pointer.h

index c90eb5c3b28bc4ba4cb4c0ab408b7e53d5dc0f4e..2f485b1423d8ef83a7d65e72bd20de210ca92f88 100644 (file)
@@ -1,3 +1,9 @@
+2011-06-05  Jonathan Wakely  <jwakely.gcc@gmail.com>
+
+       * 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  <jwakely.gcc@gmail.com>
 
        * testsuite/util/testsuite_allocator.h (tracker_allocator::construct):
index 342db12aff87425a2e6c1f395fe3170bb3b5ebc8..c83beadb149527dcbd490c576ae8304165b155dc 100644 (file)
@@ -106,8 +106,8 @@ _GLIBCXX_HAS_NESTED_TYPE(difference_type)
 
   /* TODO: remove second bool when alias templates are supported */
   template<typename _Tp, typename _Up,
-           bool = __ptrtr_rebind_helper<_Tp, _Up>::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<typename _Tp, typename _Up, bool _B2>
@@ -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<typename> struct allocator_traits;
-      template<typename, typename> class __ptrtr_rebind_helper2;
+      template<typename> friend struct allocator_traits;
+      template<typename> friend struct pointer_traits;
+      template<typename, typename> friend class __ptrtr_rebind_helper2;
     };
 
   /**
index 158ae52e3b81857cadf9fb64aab783290fc994f9..2dc1c398d1cf9b702ccf17e20f1956751eab7200 100644 (file)
@@ -42,6 +42,9 @@
 #include <bits/stl_iterator_base_types.h>
 #include <ext/cast.h>
 #include <ext/type_traits.h>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+# include <bits/ptr_traits.h>
+#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<typename _Storage_policy>
+    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<U> with alias template rebind<U> */
+      /*
+      template<typename _Up>
+        using rebind<_Up> = typename __gnu_cxx::_Pointer_adapter<
+          typename pointer_traits<_Storage_policy>::rebind<_Up>>
+      */
+      template<typename _Up>
+        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