From 52470831841974e2d47302526c8b5cc808162a1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ion=20Gazta=C3=B1aga?= Date: Tue, 6 Sep 2011 11:43:41 +0000 Subject: [PATCH] Fixed error with input_iterator insertion [SVN r74259] --- include/boost/container/vector.hpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/include/boost/container/vector.hpp b/include/boost/container/vector.hpp index 3930b98..be1a222 100644 --- a/include/boost/container/vector.hpp +++ b/include/boost/container/vector.hpp @@ -1320,12 +1320,20 @@ class vector : private containers_detail::vector_alloc_holder } template - void priv_range_insert(pointer pos, FwdIt first, FwdIt last, std::forward_iterator_tag) + void priv_range_insert(const_iterator pos, FwdIt first, FwdIt last, std::forward_iterator_tag) { if(first != last){ const size_type n = std::distance(first, last); containers_detail::advanced_insert_aux_proxy proxy(first, last); - priv_range_insert(pos, n, proxy); + priv_range_insert(pos.get_ptr(), n, proxy); + } + } + + template + void priv_range_insert(const_iterator pos, InIt first, InIt last, std::input_iterator_tag) + { + for(;first != last; ++first){ + this->emplace(pos, *first); } } @@ -1755,14 +1763,6 @@ class vector : private containers_detail::vector_alloc_holder } } - template - void priv_range_insert(const_iterator pos, InIt first, InIt last, std::input_iterator_tag) - { - for(;first != last; ++first){ - this->insert(pos, ::boost::move(value_type(*first))); - } - } - template void priv_assign_aux(InIt first, InIt last, std::input_iterator_tag) { @@ -1925,7 +1925,7 @@ class vector : private containers_detail::vector_alloc_holder { //Dispatch depending on integer/iterator typedef typename std::iterator_traits::iterator_category ItCat; - this->priv_range_insert(pos.get_ptr(), first, last, ItCat()); + this->priv_range_insert(pos, first, last, ItCat()); } void priv_check_range(size_type n) const