Implement the first part of N4258 - allocator_traits<X>::is_always_equal. Also fixes PR#23723
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@238848 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -38,6 +38,7 @@ public:
|
||||
typedef see below propagate_on_container_copy_assignment;
|
||||
typedef see below propagate_on_container_move_assignment;
|
||||
typedef see below propagate_on_container_swap;
|
||||
typedef see below is_always_equal;
|
||||
|
||||
template <class Tp>
|
||||
struct rebind
|
||||
@@ -170,6 +171,14 @@ struct __get_poc_swap<_A0, _Allocs...>
|
||||
__get_poc_swap<_Allocs...>::value;
|
||||
};
|
||||
|
||||
template <class _A0, class ..._Allocs>
|
||||
struct __get_poc_always_equal<_A0, _Allocs...>
|
||||
{
|
||||
static const bool value =
|
||||
allocator_traits<_A0>::is_always_equal::value ||
|
||||
__get_poc_always_equal<_Allocs...>::value;
|
||||
};
|
||||
|
||||
template <class ..._Allocs>
|
||||
class __scoped_allocator_storage;
|
||||
|
||||
@@ -397,6 +406,11 @@ public:
|
||||
bool,
|
||||
__get_poc_swap<outer_allocator_type, _InnerAllocs...>::value
|
||||
> propagate_on_container_swap;
|
||||
typedef integral_constant
|
||||
<
|
||||
bool,
|
||||
__get_poc_always_equal<outer_allocator_type, _InnerAllocs...>::value
|
||||
> is_always_equal;
|
||||
|
||||
template <class _Tp>
|
||||
struct rebind
|
||||
|
Reference in New Issue
Block a user