Mik*_*ine 14 c++ move shared-ptr c++11
请考虑以下代码:
struct Bar
{
std::shared_ptr<int> MemberFunction()
{
return std::move(m_memberVariable);
}
std::shared_ptr<int> m_memberVariable;
};
Run Code Online (Sandbox Code Playgroud)
是否保证std::movefrom a shared_ptr<T>将实际删除成员变量中的引用?或者我应该复制,清除并返回副本以保证*
显然,在的情况下,unique_ptr<T>它确实是正确的(它也不可能这样做),但不标准的保证,一个std::move从d shared_ptr版本的参考?[当它是成员变量,静态或全局时,本地人无关紧要,因为它们超出范围]
*可能"交换和返回"比"复制,清除和返回"更好.
Ker*_* SB 17
你确实有这种保证.从20.7.2.2.1/21-22:
shared_ptr(shared_ptr&& r) noexcept;
template<class Y> shared_ptr(shared_ptr<Y>&& r) noexcept;效果:移动构造
shared_ptr实例r.后置条件:
*this应包含旧值r.r应该是空的.r.get() == 0.
| 归档时间: |
|
| 查看次数: |
282 次 |
| 最近记录: |