Quindi non posso lasciarle tutte e quattro? (Il costruttore di copia, il costruttore di spostamento, l'operatore di affezione e l'operatore "di spostamento".)Originariamente inviato da shodan
Le funzioni corrette sono:
//////////////////////////////////////////////////////////////////////////////////////codice:template<typename T> Vector<T>::Vector(Vector<T>&& V) : v(std::move(V.v)) { // opzionale perché ci pensa già il vector V.v.resize(0); } template<typename T> Vector<T>& Vector<T>::operator=(Vector<T>&& V) { if(&V != this) { v = std::move(V.v); // opzionale perché ci pensa già il vector V.v.resize(0); } return *this; }
Errare è umano, perseverare è diabolico.codice:template<typename T> Vector<T> Vector<T>::operator-(const Vector<T>& V) const { range_except(V, ""); Vector<T> r(*this); for(auto i : v) // ??? { r.v[i] -= V.v[i]; } return std::move(r); }![]()
Comunque il range-based for l'ho già corretto: mi sono accorto che non era il modo giusto di utilizzarlo!![]()