
Meanwhile I suspected as much, but didn't know for sure how to interpret the docs. Also, this alignment check taken from the docs doesn't compile anymore with a pointer type as such:
struct transfer_buffer { boost::interprocess::offset_ptr<void> buf; size_t bufsize; }; ... ret->bufsize = SIZE; ret->buf = seg->allocate_aligned(ret->bufsize, Alignment);
// Check alignment assert((static_cast
(ret->buf) - static_cast (0)) % Alignment == 0);
Obviously, offset_ptr is not a pointer so it can be static_cast'ed.
offset_ptr is a smart pointer that emulates a pointer that can be placed
in shared memory. See offset_ptr docs and implementation for more
details. Try
// Check alignment
assert((static_cast
0);
Regards, Ion