这是一个令人尴尬的问题,但即使是 boost.interprocess 提供的编写良好的文档也不足以让我弄清楚如何做到这一点。
我拥有的是一个cached_adaptive_pool分配器实例,我想用它来构造一个对象,传递构造函数参数:
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)
但我不明白这意味着什么,我找不到使用它的例子。
我的头整天都在模板中游泳,所以即使答案很明显,也将不胜感激。