Я пытаюсь создать вектор объектов в общей памяти, что каждый принадлежит к interprocess_mutex следующим образом:Boost interprocess_mutex копировать/перемещать конструктор?
struct test
{
test(){}
interprocess_mutex mutex;
};
using namespace boost::interprocess;
managed_shared_memory seg(open_or_create, "MySharedMemory", 65536);
allocator<void, managed_shared_memory::segment_manager> void_alloc_(seg.get_segment_manager());
vector<test, allocator<test, managed_shared_memory::segment_manager>> vec(void_alloc_);
vec.push_back(test());
Однако interprocess_mutex явно отсутствует копия/конструктор перемещения и лязг не может скомпилировать с этой ошибкой:
copy constructor of 'test' is implicitly deleted because field 'mutex' has an inaccessible copy constructor
interprocess_mutex mutex;
Есть ли причина для этого? Похоже, что boost :: thread mutex имеет конструктор копирования. Как это сделать, используя interprocess_mutex?
См: http://stackoverflow.com/a/29988626/576911 Типа отличается, но проблема такая же. –