30 #ifndef CEREAL_TYPES_STD_VARIANT_HPP_
31 #define CEREAL_TYPES_STD_VARIANT_HPP_
39 namespace variant_detail
42 template <
class Archive>
57 template<
int N,
class Variant,
class Archive>
58 typename std::enable_if<N == std::variant_size_v<Variant>,
void>
::type
61 throw ::cereal::Exception(
"Error traversing variant during load");
64 template<
int N,
class Variant,
class Archive>
65 typename std::enable_if<N < std::variant_size_v<Variant>,
void>
::type
66 load_variant(Archive & ar,
int target, Variant & variant)
70 variant.template emplace<N>();
74 load_variant<N+1>(ar, target, variant);
80 template <
class Archive,
typename VariantType1,
typename... VariantTypes>
inline
86 std::visit(visitor, variant);
90 template <
class Archive,
typename... VariantTypes>
inline
93 using variant_t =
typename std::variant<VariantTypes...>;
97 if(index >=
static_cast<std::int32_t>(std::variant_size_v<variant_t>))
98 throw Exception(
"Invalid 'index' selector when deserializing std::variant");
100 variant_detail::load_variant<0>(ar, index, variant);
104 template <
class Archive>
Main cereal functionality.
#define CEREAL_NVP_(name, value)
Convenience for creating a templated NVP.
Definition: helpers.hpp:201
type
The type the bitset is encoded with.
Definition: bitset.hpp:44
std::enable_if< N==std::variant_size_v< Variant >, void >::type load_variant(Archive &, int, Variant &)
Definition: variant.hpp:59
in certain simple scenarios. They should probably not be used if maximizing performance is the main o...
Definition: access.hpp:42
std::enable_if< std::is_arithmetic< T >::value, void >::type CEREAL_LOAD_FUNCTION_NAME(BinaryInputArchive &ar, T &t)
Loading for POD types from binary.
Definition: binary.hpp:126
CEREAL_SERIALIZE_FUNCTION_NAME(Archive &ar, NameValuePair< T > &t)
Serializing NVP types to binary.
Definition: binary.hpp:134
std::enable_if< std::is_arithmetic< T >::value, void >::type CEREAL_SAVE_FUNCTION_NAME(BinaryOutputArchive &ar, T const &t)
Saving for POD types to binary.
Definition: binary.hpp:118
const GenericPointer< typename T::ValueType > T2 value
Definition: pointer.h:1282
signed int int32_t
Definition: stdint.h:123
An exception class thrown when things go wrong at runtime.
Definition: helpers.hpp:49
Definition: variant.hpp:44
Archive & ar
Definition: variant.hpp:53
void operator()(T const &value) const
Definition: variant.hpp:48
variant_save_visitor(Archive &ar_)
Definition: variant.hpp:45