Proszę rozważyć następujące struktury:Czy można bezpiecznie używać boost :: opcjonalnie w pamięci międzyprocesowej?
struct ThingThatWillGoInSharedMemory {
boost::optional<int> opt_value;
};
używam boost :: Interprocess stworzyć wspólny obszar pamięci. Moje rozumienie boost: opcjonalne było to, że był to związek dyskryminowany, a nie wskaźnik zerowy. Jako kontrprzykłady takie jak std :: map i std :: vector, które używają sterty, potrzebują jednoznacznego przydziału, aby użyć ich w pamięci międzyprocesowej, ale boost :: opcjonalnie, byłem dość pewny, że nie używam sterty i jest równoważny na pisanie:
struct ThingThatWillGoInSharedMemory {
bool value_initialised;
int value;
}
Dzięki temu można go używać bez pudełka. Byłbym zachwycony, gdyby ktoś to potwierdził - nie widziałem, aby przypadek międzyprocesowy był wyraźnie wspomniany w podpowiedziach :: opcjonalnych, tylko dorozumianych.