Должен быть простой способ использовать std :: any в векторе с записью в память процесса.
Нет, нет.
Игнорирование того, что std::any
соответствует значению, которое оно хранит на данный момент, std::any
сохраняет свое значение (как будто) косвенно. Это означает, что это скорее похоже на vector<T>
; он хранит указатель на объект, который он выделил в куче (за исключением того, что T
скрыт от типа, и он хранит только один из них). Таким образом, копирование битов самого any
само по себе не (обязательно) сделает видимым T
, который он хранит; Вы (возможно) копируете указатель, а не то, на что он указывает.
Более того, any
не может быть доставлен в такие процессы по многим причинам. Даже если бы вы могли получить доступ к байтовому диапазону объекта, сохраняемого any
, вы не сможете использовать его для восстановления any
на другой стороне. И даже если бы вы как-то могли, вам как-то пришлось бы передавать type_index
, который представляет тип, хранящийся в any
. И , что не совместимо с несколькими процессами; значение индекса типа для определенного типа в одном процессе может отличаться от индекса для того же типа в другом процессе.
То, что вы хотите, просто не сработает. Вам нужно будет использовать что-то другое, и что-то еще должно будет иметь некоторые знания о типе данных, которые он передает.