For serialization purposes, cereal requires default constructors since it handles a std::variant.
Maybe we can omit this requirement?
Cereal does support serializing types without default constructor [1]. But with using variants, cereal first creates a default constructed variant (holding the wanted type) and afterwards initializes the members [2]. Hence the way described in [1] (likely?) does not work with variants.
For serialization purposes, cereal requires default constructors since it handles a
std::variant
. Maybe we can omit this requirement?Cereal does support serializing types without default constructor [1]. But with using variants, cereal first creates a default constructed variant (holding the wanted type) and afterwards initializes the members [2]. Hence the way described in [1] (likely?) does not work with variants.
[1] https://github.com/USCiLab/cereal/blob/f3e31f32f70d4cffaa67dbc6d76ece125c6cf484/include/cereal/access.hpp#L117-L159 [2] https://github.com/USCiLab/cereal/blob/f3e31f32f70d4cffaa67dbc6d76ece125c6cf484/include/cereal/types/variant.hpp#L70