134 typedef _Tp value_type;
135 typedef size_t size_type;
136 typedef ptrdiff_t difference_type;
138#if __cplusplus <= 201703L
140 typedef _Tp* pointer;
141 typedef const _Tp* const_pointer;
142 typedef _Tp& reference;
143 typedef const _Tp& const_reference;
145 template<
typename _Tp1>
150#if __cplusplus >= 201103L
153 using propagate_on_container_move_assignment =
true_type;
155 using is_always_equal
156 _GLIBCXX20_DEPRECATED_SUGGEST(
"std::allocator_traits::is_always_equal")
162 __attribute__((__always_inline__))
166 __attribute__((__always_inline__))
171#if __cplusplus >= 201103L
176 template<
typename _Tp1>
177 __attribute__((__always_inline__))
181 __attribute__((__always_inline__))
182#if __cpp_constexpr_dynamic_alloc
187#if __cplusplus > 201703L
188 [[nodiscard,__gnu__::__always_inline__]]
192 if (std::__is_constant_evaluated())
194 if (__builtin_mul_overflow(__n,
sizeof(_Tp), &__n))
195 std::__throw_bad_array_new_length();
196 return static_cast<_Tp*
>(::operator
new(__n));
202 [[__gnu__::__always_inline__]]
204 deallocate(_Tp* __p,
size_t __n)
206 if (std::__is_constant_evaluated())
208 ::operator
delete(__p);
215 friend __attribute__((__always_inline__)) _GLIBCXX20_CONSTEXPR
220#if __cpp_impl_three_way_comparison < 201907L
221 friend __attribute__((__always_inline__)) _GLIBCXX20_CONSTEXPR