In C++ 0x, è legale/previsto che alcune classi possano essere copiate ma non spostate? Sto cercando di implementare una classe eterogenea che si ridimensiona e non sono sicuro di poterla gestire se alcune classi dovessero essere copiate e alcune dovessero essere spostate.Copia ma non si sposta
5
A
risposta
5
Sì, è legale per una classe di essere copiabile ma non mobile:
class MyClass {
public:
/* Copyable... */
MyClass(const MyClass&);
MyClass& operator= (const MyClass&);
/* ... but not movable. */
MyClass(MyClass&&) = delete;
MyClass& operator= (MyClass&&) = delete;
};
Tuttavia, non riesco a pensare a una buona ragione per cui qualcuno dovrebbe voler fare questo. Conoscendo i programmatori C++ (come me!), Penso che dovresti anticipare che questo potrebbe emergere.
Per curiosità, su quale codice si basa ciò che si interromperà se una classe fosse copiabile ma non mobile?
0
Sono abbastanza sicuro che rendere il trasferimento protetto/privato è un modo per limitare la possibilità di spostare oggetti di quella classe. Se te lo puoi aspettare in un modello? Io non la penso così Avresti bisogno di std::enable_if
per questo tipo di controllo.
Problemi correlati
- 1. Sposta la tua copia di lavoro
- 2. MATLAB "sposta" o "copia il valore restituito?
- 3. Copia autorizzazioni file, ma non file
- 4. Copia costruttore non chiama, ma il compilatore si lamenta che non c'è
- 5. BCP non restituisce errori, ma non copia alcuna riga
- 6. Copia NSString non copia?
- 7. R: copia/sposta un ambiente ad un altro
- 8. La sottolineatura CSS non si sposta su clic
- 9. Windows Batch si sposta nella directory che potrebbe non esistere
- 10. XSL - copia elementi, ma rimuovere namespace non utilizzati (s)
- 11. lodash: oggetto di copia profonda ma non tutte le proprietà
- 12. costruttore di copia in Child ma non Parent
- 13. L'entità "copia" è stata referenziata, ma non dichiarata in jspx
- 14. Negamax - il giocatore si sposta due volte
- 15. Toolbar si sposta fuori dallo schermo quando si utilizza adjustpan
- 16. Come si sposta un collegamento simbolico relativo?
- 17. Come si sposta la tartaruga in LOGO?
- 18. GoogleMap CameraUpdate si sposta su coordinate errate
- 19. Sposta con vector :: push_back
- 20. sintassi simile, ma si mostra l'errore ma un altro non
- 21. In JavaFX come si sposta uno sprite sullo schermo?
- 22. Lo schermo non si muove correttamente quando la tastiera si sposta - android
- 23. Copia/sposta l'assegnazione in std :: vector :: erase() e std :: deque :: erase()
- 24. Sposta il costruttore sull'oggetto derivato
- 25. profondo fallimento copia quando si copia oggetto personalizzato
- 26. UIPageViewController si carica lentamente quando si gira, ma non indietro
- 27. git repository sync tra computer, quando ci si sposta?
- 28. Si sono verificati più errori durante la copia dei file, ma posso vedere quali sono?
- 29. SendInput non esegue il pulsante del mouse se non si sposta il cursore
- 30. con-current-buffer non sposta il punto
È uno stack eterogeneo che viene ridimensionato. Suppongo che se voglio la compatibilità con C++ 03 con il minimo sforzo, dovrei consentire entrambi. – Puppy
Hmm ... cosa è specificamente nel codice che si interrompe con gli oggetti copiabili, immobili (credo che sia un termine ragionevole per questo?)? Sono curioso dal momento che non ho mai visto prima questo. – templatetypedef
È una buona cosa che tu abbia detto. Per qualche ragione, avevo in mente che gli oggetti che erano stati spostati non avevano bisogno di essere distrutti. Ops. – Puppy