Это неловкий вопрос, но даже хорошо написанной документации, поставляемой с boost.interprocess, мне было недостаточно, чтобы понять, как это сделать.
То, что у меня есть cached_adaptive_pool экземпляр allocator, и я хочу использовать его для создания объекта, передавая параметры конструктора:
struct Test {
Test(float argument, bool flag);
Test();
};
// Normal construction
Test obj(10, true);
// Normal dynamic allocation
Test* obj2 = new Test(20, false);
typedef managed_unique_ptr<
Test, boost::interprocess::managed_shared_memory>::type unique_ptr;
// Dynamic allocation where allocator_instance == cached_adaptive_pool,
// using the default constructor
unique_ptr obj3 = allocator_instance.allocate_one()
// As above, but with the non-default constructor
unique_ptr obj4 = allocator_instance ... ???
Это вполне может быть моей ошибкой в том, как использовать объекты распределителя в целом,Но в любом случае я не вижу, как использовать этот конкретный распределитель с интерфейсом, указанным в cached_adaptive_pool для передачи аргументов конструктора моему объекту.
cached_adaptive_pool
имеет метод: void construct(const pointer & ptr, const_reference v)
но я не понимаю, что это значит, и я не могу найти примеры, использующие его.
Моя голова весь день плавает в шаблонах, поэтому рука помощи, даже если ответ очевиден, будетс благодарностью.