Te podzielniki STL wymagają tego formularza konstruktora (20.1.5): X a(b);
z wymogiem Y(a) == b;
STL podzielnik, kopia konstruktora innego typu, ponownie powiązać
W standardowej realizacji implikuje to, i jest zaimplementowany jako:
template<class U> allocator(const allocator<U> & o) throw()
Mam problem ze zrozumieniem, dlaczego to wymaganie istnieje. Rozumiem, że alokatory powinny być statyczne (nie mieć żadnego stanu), ale dlaczego na ziemi powinieneś móc je przekonwertować w ten sposób?
Tylko pojemniki, które przechowują wszystkie przedmioty zwarty (wektor, String) może korzystać z danego rodzaju przydzielania bezpośrednio. –
Dzięki. To naprawdę brzydki wymóg. Zaczynam się zgadzać ze Scottem Meyerem, system alokacji wydaje się być w zasadzie śmieciem. –
@edA: Podobnie jak w przypadku wielu nocy spędzonych w mieście, miało to sens 15 lat temu. Zgadzam się dzisiaj. :) –