Make std::deque meet C++11 allocator requirements

Programming / Compilers / GCC - redi [138bc75d-0d04-0410-961f-82ee72b054a4] - 9 September 2014 12:29 UTC

- include/bits/deque.tcc (deque::operator=(const deque&)): Handle allocator propagation. (deque::emplace_front, deque::emplace_back): Use allocator traits. (deque::_M_push_back_aux, deque::_M_push_front_aux): Likewise. (deque::_M_pop_back_aux, deque::_M_pop_front_aux): Likewise.
- include/bits/stl_deque.h (__deque_buf_size): Add constexpr. (_Deque_iterator): Handle allocators with custom pointers. (_Deque_base): Likewise. Use allocator traits. (deque): Likewise. Add allocator-extended constructors. (deque::_M_move_assign1, deque::_M_move_assign2): Implement move assignment via tag dispatching. (deque::_M_replace_map): Replace existing data.
- include/debug/deque (deque): Add allocator-extended constructors.
- include/profile/deque (deque): Likewise.
- testsuite/23_containers/deque/allocator/copy.cc: New.
- testsuite/23_containers/deque/allocator/copy_assign.cc: New.
- testsuite/23_containers/deque/allocator/ext_ptr.cc: New.
- testsuite/23_containers/deque/allocator/minimal.cc: New.
- testsuite/23_containers/deque/allocator/move.cc: New.
- testsuite/23_containers/deque/allocator/move_assign-2.cc: New.
- testsuite/23_containers/deque/allocator/move_assign.cc: New.
- testsuite/23_containers/deque/allocator/noexcept.cc: New.
- testsuite/23_containers/deque/allocator/swap.cc: New.
- testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Adjust dg-error line number.
- testsuite/23_containers/deque/requirements/dr438/ constructor_1_neg.cc: Likewise.
- testsuite/23_containers/deque/requirements/dr438/ constructor_2_neg.cc: Likewise.
- testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Likewise.
- testsuite/23_containers/vector/52591.cc: Test both the propagating and always-equal cases.

65d8ffc Make std::deque meet C++11 allocator requirements.
libstdc++-v3/ChangeLog | 36 +++
libstdc++-v3/include/bits/deque.tcc | 45 ++-
libstdc++-v3/include/bits/stl_deque.h | 316 +++++++++++++++-----
libstdc++-v3/include/debug/deque | 10 +-
libstdc++-v3/include/profile/deque | 10 +-
.../23_containers/deque/allocator/copy.cc | 67 +++++
.../23_containers/deque/allocator/copy_assign.cc | 57 ++++
.../23_containers/deque/allocator/ext_ptr.cc | 43 +++
.../23_containers/deque/allocator/minimal.cc | 45 +++
.../23_containers/deque/allocator/move.cc | 57 ++++
.../23_containers/deque/allocator/move_assign-2.cc | 78 +++++
.../23_containers/deque/allocator/move_assign.cc | 74 +++++
.../23_containers/deque/allocator/noexcept.cc | 67 +++++
.../23_containers/deque/allocator/swap.cc | 77 +++++
.../deque/requirements/dr438/assign_neg.cc | 2 +-
.../deque/requirements/dr438/constructor_1_neg.cc | 2 +-
.../deque/requirements/dr438/constructor_2_neg.cc | 2 +-
.../deque/requirements/dr438/insert_neg.cc | 2 +-
.../testsuite/23_containers/vector/52591.cc | 43 ++-
19 files changed, 938 insertions(+), 95 deletions(-)

Upstream: gcc.gnu.org


  • Share