Вы можете сделать это с помощью object_pool
; он выводит размер своего элемента на основе параметра шаблона ElementType
, поэтому нет необходимости явно указывать размер. В качестве дополнительного параметра конструктора вы можете указать запрошенное количество блоков (ваше 'N').
Обновление на основе комментариев OP:
Из boost::pool
источника:
explicit pool(const size_type nrequested_size,
const size_type nnext_size = 32)
Так что вы можете просто сделать это:
boost::pool<> p(8 * sizeof(int), 64);
Если вам нужен пул, который возвращает куски размером 8 дюймов и делает начальное выделение 64 * 8 дюймов. После того, как вы превысили первоначальное распределение чанков, объем хранилища увеличится вдвое.