commit 11b524858a52ef3f22b515c5a0320bbbae7be597 Author: Jonathan Wakely Date: Wed Jun 6 15:54:01 2018 +0100 Remove redundant std::move on const object * include/bits/shared_ptr_base.h (__shared_count): Remove redundant move of const value. diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h index 6c5089afdda..887edbd7879 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; }