У меня есть несколько программ, написанных на C ++ 17, работающих на Linux.
Одна программа создает файл в / dev / shm / и отображает его в пространство памяти. Затем он переходит к использованию place-new для инициализации объекта POD в общей памяти.
Другие процессы откроются и отобразят эти файлы в свои области памяти для доступа к объекту. В настоящее время я использую приведение в стиле C, которое работает, но я считаю, что это технически неопределенное поведение в соответствии с правилами псевдонимов C ++, поэтому это может нарушиться в будущей версии GCC.
Компилятор не подозревает, что объект находится в этом месте памяти. Обычно я передаю это компилятору, вызывая place-new, но в этом случае это инициализирует существующий объект (который, я считаю, также будет неопределенным поведением).
Как мне получить доступ к этому объекту, не нарушая строгих правил наложения имен?
Это вариант использования для std :: launder ?