mirror of
https://github.com/boostorg/container.git
synced 2025-08-06 07:44:31 +02:00
Merge branch 'develop'
This commit is contained in:
@@ -1219,6 +1219,7 @@ use [*Boost.Container]? There are several reasons for that:
|
|||||||
* Fixed bugs:
|
* Fixed bugs:
|
||||||
* [@https://svn.boost.org/trac/boost/ticket/12749 Trac #12749: ['"container::pmr::polymorphic_allocator compilation error"]].
|
* [@https://svn.boost.org/trac/boost/ticket/12749 Trac #12749: ['"container::pmr::polymorphic_allocator compilation error"]].
|
||||||
* [@https://svn.boost.org/trac/boost/ticket/11333 Trac #11333: ['"boost::basic_string_ref should interop with boost::container::basic_string"]].
|
* [@https://svn.boost.org/trac/boost/ticket/11333 Trac #11333: ['"boost::basic_string_ref should interop with boost::container::basic_string"]].
|
||||||
|
* [@https://github.com/boostorg/container/pull/45 GitHub #45: ['"emplace_back must return reference to back(), not to *end()"]].
|
||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
|
@@ -1735,9 +1735,10 @@ class vector
|
|||||||
{
|
{
|
||||||
if (BOOST_LIKELY(this->room_enough())){
|
if (BOOST_LIKELY(this->room_enough())){
|
||||||
//There is more memory, just construct a new object at the end
|
//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>(args)...);
|
T* const p = this->priv_raw_end();
|
||||||
|
allocator_traits_type::construct(this->m_holder.alloc(), p, ::boost::forward<Args>(args)...);
|
||||||
++this->m_holder.m_size;
|
++this->m_holder.m_size;
|
||||||
return *this->priv_raw_end();
|
return *p;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
typedef container_detail::insert_emplace_proxy<Allocator, T*, Args...> type;
|
typedef container_detail::insert_emplace_proxy<Allocator, T*, Args...> type;
|
||||||
@@ -1793,10 +1794,11 @@ class vector
|
|||||||
BOOST_CONTAINER_FORCEINLINE reference emplace_back(BOOST_MOVE_UREF##N)\
|
BOOST_CONTAINER_FORCEINLINE reference emplace_back(BOOST_MOVE_UREF##N)\
|
||||||
{\
|
{\
|
||||||
if (BOOST_LIKELY(this->room_enough())){\
|
if (BOOST_LIKELY(this->room_enough())){\
|
||||||
|
T* const p = this->priv_raw_end();\
|
||||||
allocator_traits_type::construct (this->m_holder.alloc()\
|
allocator_traits_type::construct (this->m_holder.alloc()\
|
||||||
, this->priv_raw_end() BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
|
, this->priv_raw_end() BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
|
||||||
++this->m_holder.m_size;\
|
++this->m_holder.m_size;\
|
||||||
return *this->priv_raw_end();\
|
return *p;\
|
||||||
}\
|
}\
|
||||||
else{\
|
else{\
|
||||||
typedef container_detail::insert_emplace_proxy_arg##N<Allocator, T* BOOST_MOVE_I##N BOOST_MOVE_TARG##N> type;\
|
typedef container_detail::insert_emplace_proxy_arg##N<Allocator, T* BOOST_MOVE_I##N BOOST_MOVE_TARG##N> type;\
|
||||||
|
Reference in New Issue
Block a user