Vorrei disattivare il costruttore di spostamenti nella classe. Invece di spostarmi, vorrei basarmi sul costruttore di copie. Quando provo a scrivere questo codice:Disabilitazione del costruttore di spostamenti
class Boo
{
public:
Boo(){}
Boo(const Boo& boo) {};
Boo(Boo&& boo) = delete;
};
Boo TakeBoo()
{
Boo b;
return b;
}
durante la compilazione Ho ricevuto errore:
error C2280: 'Boo::Boo(Boo &&)': attempting to reference a deleted function
Come posso disattivare le copie mossa costruttore e di forza, invece?
semplicemente non sovraccaricare il costruttore movimento e il compilatore non genera un costruttore mossa per lui dato che c'è già un costruttore di copia –
dalla norma: "Se la definizione di una classe X non esplicitamente dichiarare un costruttore di movimento, uno sarà implicitamente dichiarato come predefinito se e solo se X non ha un costruttore di copia dichiarato dall'utente [...] Quando il costruttore di movimento non è dichiarato implicitamente o fornito in modo esplicito, espressioni che altrimenti avrebbero invocato il movimento il costruttore potrebbe invece invocare un costruttore di copia. " – Pixelchemist
Cosa speri di ottenere da questo? Non sembra essere significativo in alcun modo. –