diff --git a/include/deque b/include/deque index 85ea9c6..2c6773a 100644 --- a/include/deque +++ b/include/deque @@ -249,7 +249,9 @@ class _LIBCPP_TEMPLATE_VIS deque; template struct __deque_block_size { - static const _DiffType value = sizeof(_ValueType) < 256 ? 4096 / sizeof(_ValueType) : 16; + static const _DiffType __buf_size = 64 * sizeof(void*); + static const _DiffType value = (__buf_size / sizeof(_ValueType)) > 2 ? (__buf_size / sizeof(_ValueType)) : 2; + // static const _DiffType value = sizeof(_ValueType) < 256 ? 4096 / sizeof(_ValueType) : 16; }; template ::value); #endif - _LIBCPP_HIDE_FROM_ABI void clear() _NOEXCEPT; + _LIBCPP_REINITIALIZES_OBJECT _LIBCPP_HIDE_FROM_ABI void clear() _NOEXCEPT; _LIBCPP_HIDE_FROM_ABI bool __invariants() const { if (!__map_.__invariants()) @@ -2494,7 +2496,7 @@ inline void deque<_Tp, _Allocator>::swap(deque& __c) } template -inline void deque<_Tp, _Allocator>::clear() _NOEXCEPT { +_LIBCPP_REINITIALIZES_OBJECT inline void deque<_Tp, _Allocator>::clear() _NOEXCEPT { __annotate_delete(); allocator_type& __a = __alloc(); for (iterator __i = begin(), __e = end(); __i != __e; ++__i)