Рассмотрим следующий код:
struct Bar
{
std::shared_ptr<int> MemberFunction()
{
return std::move(m_memberVariable);
}
std::shared_ptr<int> m_memberVariable;
};
Гарантируется ли, что std::move
от a shared_ptr<T>
фактически удалит ссылку в переменной-члене? Или я должен копировать, очищать и возвращать копию, чтобы гарантировать это *
Очевидно, что в случае unique_ptr<T>
он делает правильную вещь (этого не может не сделать), но гарантирует ли стандарт, что std::move
d из shared_ptr
освобождает ссылку? [когда это переменная-член, статическая или глобальная, locals не имеют значения, поскольку они выходят за рамки]
* возможно, "swap and return" лучше, чем "копировать, очищать и возвращать".