Ответ 1
Согласно p0174r0
Аналогичным образом,
std::allocator<void>
определяется так, что в исходной библиотеке С++ 98 могут работать различные трианкировки шаблонов шаблона, но это не фактический распределитель, поскольку ему не хватает какallocate
иdeallocate
функции-члены, которые невозможно синтезировать по умолчанию изallocator_traits
. Эта необходимость ушла с С++ 11 и псевдонимами типаvoid_pointer
иconst_void_pointer
в allocator_traits. Тем не менее, мы продолжаем указывать его, чтобы не нарушать старый код, который еще не был обновлен для поддержки общих распределителей, на С++ 11.