Я реализую boost::circular_buffer
в boost::managed_shared_memory
. Я использовал пример кода, демонстрирующий вектор в общей памяти здесь. Я сделал следующие изменения:
1) typedef boost::circular_buffer<int, ShmemAllocatorCB> MyCircularBuffer;
2) MyCircularBuffer *circbuff = segment.construct<MyCircularBuffer>("MyCB")(alloc_inst);
3) circbuff->push_back(1);
Код выдает ошибку компиляции в строке №3. Ошибка
error C2665: 'operator new' : none of the 5 overloads could convert all the argument types c:\boost2005\boost\circular_buffer\base.hpp 1470
Из документации я понимаю функцию push_back ожидает одну из этих 3 форм:
void push_back(param_value_type);
void push_back(rvalue_type);
void push_back();
Я попробовал вызов пустого параметра, попытался привести 1 к param_value_type, rvalue_type, но ни один из них не работает. Это может быть простой ошибкой, но я не мог понять это уже довольно давно. Любая помощь приветствуется. Спасибо.
Изменить:
typedef allocator<int, managed_shared_memory::segment_manager> ShmemAllocatorCB;
managed_shared_memory segment(create_only, "MySharedMemory", 65536);
const ShmemAllocatorCB alloc_inst (segment.get_segment_manager());
ShmemAllocatorCB
и что такоеalloc_inst
? - person hfhc2   schedule 30.06.2014