Con l'introduzione di C++ 11, trivially copyableness è diventato abbastanza rilevante. Più in particolare nell'uso di "std :: atomic". Le basi sono abbastanza semplici. Una classe foo
è banalmente copiabile se:Quali regole determinano se un oggetto è banalmente copiato
foo* src = new foo();
foo* dest = malloc(sizeof(foo));
memcpy(dest, src, sizeof(foo));
ha lo stesso effetto come:
foo* src = new foo();
foo* dest = new foo(src);
Quindi un oggetto in cui la copia della memoria avrà lo stesso effetto di un costruttore di copia. Comunque là, certamente, è una presa. Non ci sono solo costruttori di copie. Ma sposta anche i costruttori, sposta gli operatori di assegnazione. Ecc.
std::is_trivially_copyable può essere utilizzato per verificare se un oggetto è banalmente copiabile. Quindi con prove ed errori è possibile rendere un oggetto banalmente copiabile.
Ma ovviamente un insieme ben definito di regole sarebbe un po 'più bello :). Quindi con la mia richiesta.