Si consideri il seguente codice:È stato svuotato uno shared-from shared_ptr?
struct Bar
{
std::shared_ptr<int> MemberFunction()
{
return std::move(m_memberVariable);
}
std::shared_ptr<int> m_memberVariable;
};
si garantisce che la std::move
da un shared_ptr<T>
sarà effettivamente rimuovere il riferimento nella variabile membro? O dovrei copiare, chiaro e copia tornare a garantire questo *
Chiaramente, nel caso di unique_ptr<T>
lo fa la cosa giusta (non può forse non lo fanno), ma non lo standard garanzia che un std::move
D da shared_ptr
rilascia il suo riferimento? [Quando è una variabile membro, statica o globale, i locali non contano come vanno fuori portata]
* possibilmente "swap e ritorno" è meglio di "copiare, chiaro e ritorno ".
Vuoi in pratica o vuoi capitolo e versetto dallo standard? In pratica, anche se lo standard mancasse insistendo su questo, qualsiasi compilatore che lo facesse sarebbe considerato malvagio. – Yakk