Ho notato che i requisiti di std :: vector sul suo tipo elememt T sono passati da C++ 03 a C++ 0x. Ora non è più necessario copiare la costruzione, ma è sufficiente spostare la costruibilità.Gli elementi vettoriali devono essere mobili?
E 'richiesto per T anche se non lo potremmo potenzialmente riallocare?
vector<boost::scoped_ptr<int>> x(numberElements);
Non vedo alcuna necessità di spostamento qui. Cosa dice la specifica?
Beh, è richiesto dallo standard ... anche se la tua implementazione effettiva può funzionare perfettamente con oggetti immobili. –
@kerrek mi sembra che questa sia una perdita di funzionalità maggiore rispetto agli array 'new'. qual è la ragione del requisito? –
Puoi sempre avere un 'std :: unique_ptr p (nuovo T [N])' per allocazioni "solo una volta". Il requisito è solo una parte dei requisiti del contenitore standard ... Non so * perché * non contiene un sacco di eccezioni speciali, oltre a mantenere il concetto semplice. Ad esempio, è possibile utilizzare 'std :: vector >' per lo stesso codice generato in C++ 11 come propria soluzione, quindi non è in realtà un evento a breve termine. –