diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index de40fb4468c7..24d1849af7dc 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2018-06-06 Jonathan Wakely + + * include/bits/shared_ptr_base.h (__shared_count): Remove redundant + move of const value. + 2018-06-06 Jakub Jelinek PR c++/86068 diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h index 6c5089afddae..887edbd78791 100644 --- a/libstdc++-v3/include/bits/shared_ptr_base.h +++ b/libstdc++-v3/include/bits/shared_ptr_base.h @@ -534,6 +534,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION public: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_ptr_inplace>; + // Alloc parameter is not a reference so doesn't alias anything in __args template _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args) : _M_impl(__a) @@ -653,8 +654,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typename _Sp_cp_type::__allocator_type __a2(__a); auto __guard = std::__allocate_guarded(__a2); _Sp_cp_type* __mem = __guard.get(); - ::new (__mem) _Sp_cp_type(std::move(__a), - std::forward<_Args>(__args)...); + ::new (__mem) _Sp_cp_type(__a, std::forward<_Args>(__args)...); _M_pi = __mem; __guard = nullptr; }