考虑以下代码:
struct Bar
{
std::shared_ptr<int> MemberFunction()
{
return std::move(m_memberVariable);
}
std::shared_ptr<int> m_memberVariable;
};
是否保证std::move
from ashared_ptr<T>
实际上会删除成员变量中的引用?或者我应该复制、清除并返回副本以保证这一点*
显然,在unique_ptr<T>
它做正确的事情的情况下(它不可能不做),但标准是否保证a std::move
d fromshared_ptr
释放它的引用?[当它是成员变量,静态或全局时,局部变量超出范围无关紧要]
*可能“交换并返回”比“复制、清除和返回”更好。