请考虑以下结构:
struct ThingThatWillGoInSharedMemory {
boost::optional<int> opt_value;
};
我正在使用 boost::interprocess 来创建共享内存区域。我对 boost::optional 的理解是它是一个有区别的联合而不是一个可为空的指针。作为一个反例,使用堆的 std::map 和 std::vector 需要显式分配器才能在进程间内存中使用它们,但是 boost::optional,我相当确定不使用堆并且等效于写作:
struct ThingThatWillGoInSharedMemory {
bool value_initialised;
int value;
}
所以它可以开箱即用。如果有人证实这一点,我会很高兴 - 我没有看到 boost::optional 文档中明确提到了进程间案例,只是暗示。