Это вообще невозможно, по крайней мере для произвольных типов.Обратите внимание, что, возможно, вы могли бы сериализовать с помощью некоторого хитрого кода (например, найти размер элементов, содержащихся в any), но любой код полагается на то, что компилятор статически помещает любой type_code и надлежащие types в заполнитель,Вы, конечно, не можете сделать это при десериализации в C ++, так как тип, который вы получите от десериализации, не известен во время компиляции (как того требует вновь созданная boost::any
).
Лучшее решение - этосоздайте какой-нибудь специализированный тип для точных типов элементов, которые вы собираетесь сериализовать.Затем вы можете иметь особые случаи для фактического типа десериализуемого элемента, но учтите, что сериализация / десериализация каждого типа элемента должна быть физически записана как статический код C ++.
PD.Некоторые другие предложили использовать boost::variant
в качестве представления этого специализированного типа, содержащего точные типы, которые вы собираетесь сериализовать.Однако вам нужен способ определения точного типа при десериализации (возможно, присвоение идентификаторов типам в варианте).