Данные для каждого объекта или локальное состояние относятся к любым элементам нестатических данных в классе распределителя.
Проблема в том, что в настоящее время (в c++03
) нет поддержки распределителей с так называемым локальным состоянием. Это часто считается недостатком модели распределителя в современной c++
.
Прочтите эту статью, в которой подробно описан дизайн пользовательского распределителя. В параграфе Design конкретно рассматриваются некоторые подводные камни распределителей, которые включают местное состояние.
Вкратце, некоторые операции в стандартной библиотеке в настоящее время требуют, чтобы объекты определенного типа были безопасно выделены одним экземпляром распределителя и были освобождены другим экземпляром распределителя (оба распределителя одного типа - конечно!). Это может иметь место, например, при реализации list::splice
. Если распределителям разрешено иметь локальное состояние, это может быть сложно ...
В следующей редакции c++0x
представляется, что распределителям будет разрешено включать локальное состояние, ознакомьтесь с разделом scoped allocator section здесь .
Надеюсь, это поможет.