Ho un caso d'uso che il mio oggetto non deve essere copiato in alcun modo. Ho scritto una lista completa esagerata delle delezioni dell'operatore di copia e di assegnazione copia qui sotto. Ce ne sono così tanti che non posso essere sicuro di quali usare, ea volte questo mi rende paranoico. Non devo scriverli tutti nel mio codice, vero? Quindi, al fine di evitare qualsiasi tipo di copia di oggetti, quale di essi dovrei usare?Eliminazione dei costruttori di copie e copia degli operatori di assegnazione. Quali di questi sono essenziali?
MyClass ( MyClass &) = delete;
MyClass (const MyClass &) = delete;
MyClass ( MyClass &&) = delete;
MyClass (const MyClass &&) = delete;
MyClass operator=( MyClass &) = delete;
MyClass operator=(const MyClass &) = delete;
const MyClass operator=( MyClass &) = delete;
const MyClass operator=(const MyClass &) = delete;
MyClass & operator=( MyClass &) = delete;
MyClass & operator=(const MyClass &) = delete;
const MyClass & operator=( MyClass &) = delete;
const MyClass & operator=(const MyClass &) = delete;
MyClass && operator=( MyClass &) = delete;
MyClass && operator=(const MyClass &) = delete;
const MyClass && operator=( MyClass &) = delete;
const MyClass && operator=(const MyClass &) = delete;
MyClass operator=( MyClass &&) = delete;
MyClass operator=(const MyClass &&) = delete;
const MyClass operator=( MyClass &&) = delete;
const MyClass operator=(const MyClass &&) = delete;
MyClass & operator=( MyClass &&) = delete;
MyClass & operator=(const MyClass &&) = delete;
const MyClass & operator=( MyClass &&) = delete;
const MyClass & operator=(const MyClass &&) = delete;
MyClass && operator=( MyClass &&) = delete;
MyClass && operator=(const MyClass &&) = delete;
const MyClass && operator=( MyClass &&) = delete;
const MyClass && operator=(const MyClass &&) = delete;
Questo vede un po 'paranoico in effetti :) – melak47
Inoltre non verrà compilato, perché non è possibile sovraccaricare il valore restituito. – interjay
Inoltre, hai dimenticato 'volatile' ;-) –