Связано: Почему стандартные контейнеры требуют, чтобы allocator_type :: value_type был типом элемента?
Говорят, что после С++ 17 было отказано:
template<>
struct allocator<void>;
Интересно, устарел ли он, потому что только один первичный шаблон способен разместить allocator<void>
, или прецедент использования allocator<void>
устарел.
Если последнее, интересно, почему. Я думаю, что allocator<void>
полезен при указании распределителя, не привязанного к определенному типу (так что просто некоторые схемы/метаданные).