次の構造体を検討してください。
struct ThingThatWillGoInSharedMemory {
boost::optional<int> opt_value;
};
boost::interprocess を使用して共有メモリ領域を作成しています。boost::optional についての私の理解は、null 許容ポインターではなく、識別された共用体であるということでした。反例として、ヒープを使用する std::map や std::vector のようなものは、プロセス間メモリでそれらを使用するために明示的なアロケーターが必要ですが、boost::optional はヒープを使用しないとかなり確信していました。書き込み:
struct ThingThatWillGoInSharedMemory {
bool value_initialised;
int value;
}
そのため、箱から出して使用することができます。誰かがこれを確認してくれたらうれしいです-プロセス間のケースがboost::optionalドキュメントで明示的に言及されていることはわかりませんでしたが、暗示されているだけです。