From 5fe2dba504be153643cb8f82eec0a46f97f3d179 Mon Sep 17 00:00:00 2001 From: Tobias Reh Date: Fri, 24 Feb 2017 15:33:30 +0100 Subject: [PATCH] emplace_back must return reference to back(), not to *end() --- include/boost/container/vector.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/boost/container/vector.hpp b/include/boost/container/vector.hpp index 5d7d765..3fdd003 100644 --- a/include/boost/container/vector.hpp +++ b/include/boost/container/vector.hpp @@ -1735,9 +1735,10 @@ class vector { if (BOOST_LIKELY(this->room_enough())){ //There is more memory, just construct a new object at the end - allocator_traits_type::construct(this->m_holder.alloc(), this->priv_raw_end(), ::boost::forward(args)...); + T* const p = this->priv_raw_end(); + allocator_traits_type::construct(this->m_holder.alloc(), p, ::boost::forward(args)...); ++this->m_holder.m_size; - return *this->priv_raw_end(); + return *p; } else{ typedef container_detail::insert_emplace_proxy type;