Questa funzione membro, che non ha alcun effetto definito nello standard (solo osservazioni), avrebbe un uso limitato se non consentito di riallocare. Ma l'unico punto che ho trovato nella norma che sembra applicarsi sarebbe 23.2.1/11:Il vettore :: shrink_to_fit è autorizzato a riallocare?
"Se non altrimenti specificato (esplicitamente o attraverso la definizione di una funzione in termini di altre funzioni), invocando un membro di container la funzione o il passaggio di un contenitore come argomento a una funzione di libreria non deve invalidare gli iteratori o modificare i valori di oggetti all'interno di quel contenitore. "
Poiché le riallocazioni invalidano gli iteratori, ciò implicherebbe che shrink_to_fit non possa essere riallocato formalmente? In tal caso, la funzione potrebbe avere effetto solo su implementazioni in cui la capacità di riduzione non si rialloca, se del caso ...
dove è necessario che T sia MoveInsertable? – soulie
23.3.6.3 [vector.capacity] paragrafo 7 nel documento di lavoro corrente, è stato aggiunto post-C++ 11 da [LWG 2033] (http://cplusplus.github.com/LWG/lwg-defects.html# 2033). N.B. il termine è "' MoveInsertable' in _X_ ", non ha senso dire che un tipo è solo' MoveInsertable' devi dire cosa lo stai inserendo _into_ –
Certo quelle aggiunte chiariscono molto l'effetto voluto della funzione . – soulie