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