aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely.gcc@gmail.com>2011-11-08 00:33:45 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2011-11-08 00:33:45 +0000
commit7579d15b5819a8df09e1ba4ae05d765185b6bba8 (patch)
treeafeb0bf897f5ac1ae9e710c7e072062215f230d0
parente23de0edd9ca34e809f9cb19c153ae837d38182b (diff)
downloadgcc-7579d15b5819a8df09e1ba4ae05d765185b6bba8.zip
gcc-7579d15b5819a8df09e1ba4ae05d765185b6bba8.tar.gz
gcc-7579d15b5819a8df09e1ba4ae05d765185b6bba8.tar.bz2
ptr_traits.h (__rebind): Replace with...
* include/bits/ptr_traits.h (__rebind): Replace with... (rebind): Implement using alias-declaration. * include/ext/pointer.h (__rebind): Replace with... (rebind): Implement using alias-declaration. * include/bits/alloc_traits.h (__rebind_alloc, __rebind_traits): Replace with... (rebind_alloc, rebind_traits): Implement using alias-declaration. * include/ext/alloc_traits.h (rebind): Use rebind_alloc instead of __rebind_alloc. * include/std/scoped_allocator (rebind): Likewise. From-SVN: r181139
-rw-r--r--libstdc++-v3/ChangeLog13
-rw-r--r--libstdc++-v3/include/bits/alloc_traits.h23
-rw-r--r--libstdc++-v3/include/bits/ptr_traits.h50
-rw-r--r--libstdc++-v3/include/ext/alloc_traits.h2
-rw-r--r--libstdc++-v3/include/ext/pointer.h14
-rw-r--r--libstdc++-v3/include/std/scoped_allocator3
6 files changed, 26 insertions, 79 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 1583ef0..5f41606 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,16 @@
+2011-11-08 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/ptr_traits.h (__rebind): Replace with...
+ (rebind): Implement using alias-declaration.
+ * include/ext/pointer.h (__rebind): Replace with...
+ (rebind): Implement using alias-declaration.
+ * include/bits/alloc_traits.h (__rebind_alloc, __rebind_traits):
+ Replace with...
+ (rebind_alloc, rebind_traits): Implement using alias-declaration.
+ * include/ext/alloc_traits.h (rebind): Use rebind_alloc instead of
+ __rebind_alloc.
+ * include/std/scoped_allocator (rebind): Likewise.
+
2011-11-07 Jonathan Wakely <jwakely.gcc@gmail.com>
* include/std/mutex (call_once): Store closure in __once_functor
diff --git a/libstdc++-v3/include/bits/alloc_traits.h b/libstdc++-v3/include/bits/alloc_traits.h
index 6558518..e1f4d41 100644
--- a/libstdc++-v3/include/bits/alloc_traits.h
+++ b/libstdc++-v3/include/bits/alloc_traits.h
@@ -102,10 +102,8 @@ _GLIBCXX_ALLOC_TR_NESTED_TYPE(pointer, value_type*)
*/
typedef __pointer pointer;
-// TODO: Use pointer_traits::rebind alias template.
-
_GLIBCXX_ALLOC_TR_NESTED_TYPE(const_pointer,
- typename pointer_traits<pointer>::template __rebind<const value_type>::__type)
+ typename pointer_traits<pointer>::template rebind<const value_type>)
/**
* @brief The allocator's const pointer type.
@@ -116,7 +114,7 @@ _GLIBCXX_ALLOC_TR_NESTED_TYPE(const_pointer,
typedef __const_pointer const_pointer;
_GLIBCXX_ALLOC_TR_NESTED_TYPE(void_pointer,
- typename pointer_traits<pointer>::template __rebind<void>::__type)
+ typename pointer_traits<pointer>::template rebind<void>)
/**
* @brief The allocator's void pointer type.
@@ -127,7 +125,7 @@ _GLIBCXX_ALLOC_TR_NESTED_TYPE(void_pointer,
typedef __void_pointer void_pointer;
_GLIBCXX_ALLOC_TR_NESTED_TYPE(const_void_pointer,
- typename pointer_traits<pointer>::template __rebind<const void>::__type)
+ typename pointer_traits<pointer>::template rebind<const void>)
/**
* @brief The allocator's const void pointer type.
@@ -196,23 +194,10 @@ _GLIBCXX_ALLOC_TR_NESTED_TYPE(propagate_on_container_swap,
#undef _GLIBCXX_ALLOC_TR_NESTED_TYPE
- /* TODO: use template alias
template<typename _Tp>
- using rebind_alloc = __alloctr_rebind<_Alloc, _Tp>::__type;
+ using rebind_alloc = typename __alloctr_rebind<_Alloc, _Tp>::__type;
template<typename _Tp>
using rebind_traits = allocator_traits<rebind_alloc<_Tp>>;
- */
- template<typename _Tp>
- struct __rebind_alloc
- {
- typedef typename __alloctr_rebind<_Alloc, _Tp>::__type __type;
- };
-
- template<typename _Tp>
- struct __rebind_traits
- {
- typedef allocator_traits<typename __rebind_alloc<_Tp>::__type> __type;
- };
private:
template<typename _Alloc2>
diff --git a/libstdc++-v3/include/bits/ptr_traits.h b/libstdc++-v3/include/bits/ptr_traits.h
index 4d33722..7f120b1 100644
--- a/libstdc++-v3/include/bits/ptr_traits.h
+++ b/libstdc++-v3/include/bits/ptr_traits.h
@@ -86,46 +86,19 @@ _GLIBCXX_HAS_NESTED_TYPE(difference_type)
static const bool __value = _S_chk<_Ptr, _Up>(nullptr);
};
- // hack to use _Tp::__rebind<_Up>::__type instead if that exists
- template<typename _Ptr, typename _Up>
- class __ptrtr_rebind_helper2
- {
- template<typename _Ptr2, typename _Up2>
- static constexpr bool
- _S_chk(typename _Ptr2::template __rebind<_Up2>::__type*)
- { return true; }
-
- template<typename, typename>
- static constexpr bool
- _S_chk(...)
- { return false; }
-
- public:
- static const bool __value = _S_chk<_Ptr, _Up>(nullptr);
- };
-
- /* 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>
struct __ptrtr_rebind;
- template<typename _Tp, typename _Up, bool _B2>
- struct __ptrtr_rebind<_Tp, _Up, true, _B2>
- {
- typedef typename _Tp::template rebind<_Up> __type;
- };
-
- /* TODO: remove this when alias templates are supported */
template<typename _Tp, typename _Up>
- struct __ptrtr_rebind<_Tp, _Up, false, true>
+ struct __ptrtr_rebind<_Tp, _Up, true>
{
- typedef typename _Tp::template __rebind<_Up>::__type __type;
+ typedef typename _Tp::template rebind<_Up> __type;
};
template<template<typename, typename...> class _SomePtr, typename _Up,
typename _Tp, typename... _Args>
- struct __ptrtr_rebind<_SomePtr<_Tp, _Args...>, _Up, false, false>
+ struct __ptrtr_rebind<_SomePtr<_Tp, _Args...>, _Up, false>
{
typedef _SomePtr<_Up, _Args...> __type;
};
@@ -168,14 +141,8 @@ _GLIBCXX_HAS_NESTED_TYPE(difference_type)
typedef typename __ptrtr_diff_type<_Ptr>::__type difference_type;
private:
- /* TODO: replace __rebind<U> with alias template rebind<U> */
- /*
template<typename _Up>
- using rebind<_Up> = typename __ptrtr_rebind<_Ptr, _Up>::__type;
- */
- template<typename _Up>
- struct __rebind
- { typedef typename __ptrtr_rebind<_Ptr, _Up>::__type __type; };
+ using rebind = typename __ptrtr_rebind<_Ptr, _Up>::__type;
// allocator_traits needs to use __rebind
template<typename> friend struct allocator_traits;
@@ -197,13 +164,8 @@ _GLIBCXX_HAS_NESTED_TYPE(difference_type)
/// Type used to represent the difference between two pointers
typedef ptrdiff_t difference_type;
- /* TODO: replace __rebind<U> with alias template rebind<U> */
- /*
template<typename _Up>
- using rebind<_Up> = U*;
- */
- template<typename U>
- struct __rebind { typedef U* __type; };
+ using rebind = _Up*;
/**
* @brief Obtain a pointer to an object
diff --git a/libstdc++-v3/include/ext/alloc_traits.h b/libstdc++-v3/include/ext/alloc_traits.h
index de13b65..4862636 100644
--- a/libstdc++-v3/include/ext/alloc_traits.h
+++ b/libstdc++-v3/include/ext/alloc_traits.h
@@ -161,7 +161,7 @@ template<typename _Alloc>
template<typename _Tp>
struct rebind
- { typedef typename _Base_type::template __rebind_alloc<_Tp>::__type other; };
+ { typedef typename _Base_type::template rebind_alloc<_Tp> other; };
#else
typedef typename _Alloc::pointer pointer;
diff --git a/libstdc++-v3/include/ext/pointer.h b/libstdc++-v3/include/ext/pointer.h
index 9877e14..45fed19 100644
--- a/libstdc++-v3/include/ext/pointer.h
+++ b/libstdc++-v3/include/ext/pointer.h
@@ -577,21 +577,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
/// 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<
+ using rebind = 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;
- };
static pointer pointer_to(typename pointer::reference __r) noexcept
{ return pointer(std::addressof(__r)); }
diff --git a/libstdc++-v3/include/std/scoped_allocator b/libstdc++-v3/include/std/scoped_allocator
index 9fd53db..edace98 100644
--- a/libstdc++-v3/include/std/scoped_allocator
+++ b/libstdc++-v3/include/std/scoped_allocator
@@ -267,9 +267,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template <class _Tp>
struct rebind
{
- // TODO: use rebind_alloc<Tp> instead of __rebind_alloc<Tp>::__type
typedef scoped_allocator_adaptor<
- typename __traits::template __rebind_alloc<_Tp>::__type,
+ typename __traits::template rebind_alloc<_Tp>,
_InnerAllocs...> other;
};