Skip to content

Commit b2ac260

Browse files
committed
[libc++] Don't instantiate allocators in __tree on an incomplete type
1 parent 22576e2 commit b2ac260

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

libcxx/include/map

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -911,8 +911,7 @@ public:
911911
private:
912912
typedef std::__value_type<key_type, mapped_type> __value_type;
913913
typedef __map_value_compare<key_type, value_type, key_compare> __vc;
914-
typedef __rebind_alloc<allocator_traits<allocator_type>, __value_type> __allocator_type;
915-
typedef __tree<__value_type, __vc, __allocator_type> __base;
914+
typedef __tree<__value_type, __vc, allocator_type> __base;
916915
typedef typename __base::__node_traits __node_traits;
917916
typedef allocator_traits<allocator_type> __alloc_traits;
918917

@@ -1596,8 +1595,7 @@ public:
15961595
private:
15971596
typedef std::__value_type<key_type, mapped_type> __value_type;
15981597
typedef __map_value_compare<key_type, value_type, key_compare> __vc;
1599-
typedef __rebind_alloc<allocator_traits<allocator_type>, __value_type> __allocator_type;
1600-
typedef __tree<__value_type, __vc, __allocator_type> __base;
1598+
typedef __tree<__value_type, __vc, allocator_type> __base;
16011599
typedef typename __base::__node_traits __node_traits;
16021600
typedef allocator_traits<allocator_type> __alloc_traits;
16031601

libcxx/test/support/min_allocator.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,9 @@ class min_allocator
390390
typedef T value_type;
391391
typedef min_pointer<T> pointer;
392392

393+
// Make sure that value_type is a complete when min_allocator is instantiated
394+
static_assert(alignof(value_type) != 0);
395+
393396
min_allocator() = default;
394397
template <class U>
395398
TEST_CONSTEXPR_CXX20 min_allocator(min_allocator<U>) {}

0 commit comments

Comments
 (0)