Проблема: насколько я понимаю из спецификации C++, то, чего я хочу достичь, невозможно без функций C++23 start_lifetime_as, потому что я не могу начать жизнь моих объектов в общей памяти на стороне потребителя, и даже примитивные типы демонстрируют неопределенное поведение, если программа читает из области памяти без предварительной записи в нее (даже если я записал в память из другой процесс??)
Я просматривал реализацию std::start_lifetime_as() и задавался вопросом, забочусь ли я только о примитивных типах, буду ли я соответствовать спецификации C++, если у меня есть C-функция (в другом модуле компиляции) для "отмывания" моих указателей, например int* launder_int(int* in) { return in; , потому что передача массивов между C и C++ кажется допустимой, например, это используется в некоторых частях libc. В то же время я не могу найти в спецификации C++ ни одного раздела, описывающего, как время существования объекта взаимодействует с функциями, реализованными в коде C, а разделы времени жизни объекта и extern C кажутся противоречивыми, так как же C++ может взаимодействовать с кодом C "правильным" способом?
Предполагая, что мой launder_int работает как задумано, может ли он вообще заменить start_lifetime_as/
Код: Выделить всё
start_lifetime_as_array? Будет ли launder_intПодробнее здесь: https://stackoverflow.com/questions/798 ... rom-c-code
Мобильная версия