NDDEM
Namespaces | Classes | Functions | Variables
cereal::detail Namespace Reference

Namespaces

 anonymous_namespace{helpers.hpp}
 
 anonymous_namespace{polymorphic_impl.hpp}
 

Classes

struct  NameValuePairCore
 Traits struct for NVPs. More...
 
struct  DeferredDataCore
 Traits struct for DeferredData. More...
 
class  OutputArchiveBase
 
class  InputArchiveBase
 
struct  polymorphic_serialization_support
 
struct  Version
 Version information class. More...
 
struct  Versions
 Holds all registered version information. More...
 
struct  PolymorphicCaster
 Base type for polymorphic void casting. More...
 
struct  PolymorphicCasters
 Holds registered mappings between base and derived types for casting. More...
 
struct  PolymorphicVirtualCaster
 Strongly typed derivation of PolymorphicCaster. More...
 
struct  RegisterPolymorphicCaster
 Registers a polymorphic casting relation between a Base and Derived type. More...
 
struct  binding_name
 Binds a compile time type with a user defined string. More...
 
struct  OutputBindingMap
 A structure holding a map from type_indices to output serializer functions. More...
 
struct  EmptyDeleter
 An empty noop deleter. More...
 
struct  InputBindingMap
 A structure holding a map from type name strings to input serializer functions. More...
 
struct  InputBindingCreator
 Creates a binding (map entry) between an input archive type and a polymorphic type. More...
 
struct  OutputBindingCreator
 Creates a binding (map entry) between an output archive type and a polymorphic type. More...
 
struct  adl_tag
 
struct  create_bindings
 Causes the static object bindings between an archive type and a serializable type T. More...
 
struct  instantiate_function
 When specialized, causes the compiler to instantiate its parameter. More...
 
struct  bind_to_archives
 Begins the binding process of a type to all registered archives. More...
 
struct  init_binding
 Used to hide the static object used to bind T to registered archives. More...
 
struct  PolymorphicRelation
 Forward declaration, see polymorphic_impl.hpp for more information. More...
 
class  StaticObject
 A static, pre-execution object. More...
 
struct  Construct
 
struct  Construct< T, A, false, false, false, false >
 
struct  Construct< T, A, true, false, false, false >
 
struct  Construct< T, A, false, true, false, false >
 
struct  Construct< T, A, false, false, true, false >
 
struct  Construct< T, A, false, false, false, true >
 

Functions

template<class T , typename BindingTag >
void instantiate_polymorphic_binding (T *, int, BindingTag, adl_tag)
 Base case overload for instantiation. More...
 

Variables

static const uint32_t msb_32bit = 0x80000000
 
static const int32_t msb2_32bit = 0x40000000
 

Function Documentation

◆ instantiate_polymorphic_binding()

template<class T , typename BindingTag >
void cereal::detail::instantiate_polymorphic_binding ( T *  ,
int  ,
BindingTag  ,
adl_tag   
)

Base case overload for instantiation.

This will end up always being the best overload due to the second parameter always being passed as an int. All other overloads will accept pointers to archive types and have lower precedence than int.

Since the compiler needs to check all possible overloads, the other overloads created via CEREAL_REGISTER_ARCHIVE, which will have lower precedence due to requiring a conversion from int to (Archive*), will cause their return types to be instantiated through the static object mechanisms even though they are never called.

See the documentation for the other functions to try and understand this

Variable Documentation

◆ msb2_32bit

const int32_t cereal::detail::msb2_32bit = 0x40000000
static

◆ msb_32bit

const uint32_t cereal::detail::msb_32bit = 0x80000000
static