Пожалуйста, обратите внимание следующие структуры:Можно ли использовать boost :: optional в межпроцессной памяти?
struct ThingThatWillGoInSharedMemory {
boost::optional<int> opt_value;
};
Я использую повышение :: межпроцессного создать общую область памяти. Мое понимание boost :: optional заключалось в том, что это был дискриминационный союз, а не нулевой указатель. В качестве встречного примера такие вещи, как std :: map и std :: vector, которые используют кучу, нуждаются в явном распределителе, чтобы использовать их в межпроцессной памяти, но boost :: optional, я был уверен, что не использует кучу и эквивалентен к письму:
struct ThingThatWillGoInSharedMemory {
bool value_initialised;
int value;
}
Так что его можно использовать из коробки. Я был бы рад, если кто-то подтвердит это - я не видел, что дело interprocess явно упоминалось в boost :: optional docs, только подразумевалось.