Lo standard definisce esattamente cosa posso fare con un oggetto dopo che è stato spostato? Pensavo che tutto ciò che puoi fare con un oggetto spostato è distruggerlo, ma ciò non sarebbe sufficiente.
Ad esempio, prendi il modello di funzione swap
come definito nella libreria standard:
template <typename T>
void swap(T& a, T& b)
{
T c = std::move(a); // line 1
a = std::move(b); // line 2: assignment to moved-from object!
b = std::move(c); // line 3: assignment to moved-from object!
}
Ovviamente, deve essere possibile assegnare agli oggetti spostati, altrimenti le linee 2 e 3 fallirebbero. Quindi cos'altro posso fare con gli oggetti spostati? Dove posso trovare esattamente questi dettagli nello standard?
(A proposito, perché è T c = std::move(a);
invece che T c(std::move(a));
nella riga 1?)
pop_back
spostarti davector
. Ma puoi sicuramente scoprire se lo èempty()
.