I allocatori STL richiedono questa forma di costruzione (20.1.5): X a(b);
con il requisito che Y(a) == b;
stl allocatore, costruttore di copia di altro tipo, Rebind
Nell'implementazione standard questo implica, ed è implementato come:
template<class U> allocator(const allocator<U> & o) throw()
Ho difficoltà a capire perché questo requisito esiste. Capisco che gli allocatori dovrebbero essere statici (non hanno uno stato), ma perché mai dovresti essere in grado di convertirli in questo modo?
soltanto le confezioni che memorizzano tutti gli articoli contiguo (vettore, stringa) può utilizzare il dato tipo allocatore direttamente. –
Grazie. Questo è un requisito davvero schifoso. Sto iniziando a concordare con Scott Meyer qui, il sistema di allocazione sembra essere fondamentalmente spazzatura. –
@edA: Come tante notti in città, aveva senso 15 anni fa. Sono d'accordo oggi. :) –