cereal::InputArchive&lt; ArchiveType, Flags &gt;(3) Library Functions Manual cereal::InputArchive&lt; ArchiveType, Flags &gt;(3)

# [NAME](#NAME)

cereal::InputArchive&lt; ArchiveType, Flags &gt; - The base input archive class.

# [SYNOPSIS](#SYNOPSIS)

#include &lt;/home/build/include/cereal/cereal.hpp&gt;

Inherits **cereal::detail::InputArchiveBase**.

## [Public Member Functions](#Public_Member_Functions)

**InputArchive** (ArchiveType \*const derived)  
Construct the output archive. **InputArchive** & **operator=** (**InputArchive** const &)=delete  
template&lt;class ... Types&gt; ArchiveType & **operator()** (Types &&... args)  
Serializes all passed in data. void **serializeDeferments** ()  
Serializes any data marked for deferment using defer. std::shared\_ptr&lt; void &gt; **getSharedPointer** (std::uint32\_t const id)  
Retrieves a shared pointer given a unique key for it. void **registerSharedPointer** (std::uint32\_t const id, std::shared\_ptr&lt; void &gt; ptr)  
Registers a shared pointer to its unique identifier. std::string **getPolymorphicName** (std::uint32\_t const id)  
Retrieves the string for a polymorphic type given a unique key for it. void **registerPolymorphicName** (std::uint32\_t const id, std::string const &name)  
Registers a polymorphic name string to its unique identifier.

Public Member Functions inherited from **cereal::detail::InputArchiveBase**  
**InputArchiveBase** (InputArchiveBase &&) **CEREAL\_NOEXCEPT**  
InputArchiveBase & **operator=** (InputArchiveBase &&) **CEREAL\_NOEXCEPT**

## [Friends](#Friends)

template&lt;class A, class B, bool C, bool D, bool E, bool F&gt; struct **detail::Construct**  
Befriend for versioning in load\_and\_construct.

## [Boost Transition Layer](#Boost_Transition_Layer)

Functionality that mirrors the syntax for Boost. This is useful if you are transitioning a large project from Boost to cereal. The preferred interface for cereal is using operator().  
using **is\_loading** = std::true\_type  
Indicates this archive is intended for loading. using **is\_saving** = std::false\_type  
Indicates this archive is not intended for saving. template&lt;class T&gt; ArchiveType & **operator&** (T &&arg)  
Serializes passed in data. template&lt;class T&gt; ArchiveType & **operator&gt;&gt;** (T &&arg)  
Serializes passed in data.

# [Detailed Description](#Detailed_Description)

## [template&lt;class ArchiveType, std::uint32\_t Flags = 0&gt;](#template_class_ArchiveType,_std::uint32_t_Flags_=_0_)

class cereal::InputArchive&lt; ArchiveType, Flags &gt;"The base input archive class.

This is the base input archive for all input archives. If you create a custom archive class, it should derive from this, passing itself as a template parameter for the ArchiveType.

The base class provides all of the functionality necessary to properly forward data to the correct serialization functions.

Individual archives should use a combination of prologue and epilogue functions together with specializations of serialize, save, and load to alter the functionality of their serialization.

**Template Parameters**

*ArchiveType* The archive type that derives from **InputArchive**  
*Flags Flags to control advanced functionality. See the Flags enum for more information.*

# [Member Typedef Documentation](#Member_Typedef_Documentation)

## template&lt;class ArchiveType, std::uint32\_t Flags = 0&gt; using **cereal::InputArchive**&lt; ArchiveType, **Flags** &gt;::is\_loading = std::true\_type

Indicates this archive is intended for loading. This ensures compatibility with boost archive types. If you are transitioning from boost, you can check this value within a member or external serialize function (i.e., Archive::is\_loading::value) to enable behavior specific to loading, until you can transition to split save/load or save\_minimal/load\_minimal functions

## template&lt;class ArchiveType, std::uint32\_t Flags = 0&gt; using **cereal::InputArchive**&lt; ArchiveType, **Flags** &gt;::is\_saving = std::false\_type

Indicates this archive is not intended for saving. This ensures compatibility with boost archive types. If you are transitioning from boost, you can check this value within a member or external serialize function (i.e., Archive::is\_saving::value) to disable behavior specific to loading, until you can transition to split save/load or save\_minimal/load\_minimal functions

# [Constructor & Destructor Documentation](#Constructor_&_Destructor_Documentation)

## [template&lt;class ArchiveType, std::uint32\_t Flags = 0&gt; **cereal::InputArchive**&lt; ArchiveType, **Flags** &gt;::InputArchive (ArchiveType \*const derived) \[inline\]](#template_class_ArchiveType,_std::uint32_t_Flags_=_0__)

Construct the output archive.

**Parameters**

*derived* A pointer to the derived ArchiveType (pass this from the derived archive)

# [Member Function Documentation](#Member_Function_Documentation)

## [template&lt;class ArchiveType, std::uint32\_t Flags = 0&gt; std::string **cereal::InputArchive**&lt; ArchiveType, **Flags** &gt;::getPolymorphicName (std::uint32\_t const id) \[inline\]](#template_class_ArchiveType,_std::uint32_t_Flags_=_0__std::string_)

Retrieves the string for a polymorphic type given a unique key for it. This is used to retrieve a string previously registered during a polymorphic load.

## [template&lt;class ArchiveType, std::uint32\_t Flags = 0&gt; std::shared\_ptr&lt; void &gt; **cereal::InputArchive**&lt; ArchiveType, **Flags** &gt;::getSharedPointer (std::uint32\_t const id) \[inline\]](#template_class_ArchiveType,_std::uint32_t_Flags_=_0__std::shared_ptr__void___)

Retrieves a shared pointer given a unique key for it. This is used to retrieve a previously registered shared\_ptr which has already been loaded.

## template&lt;class ArchiveType, std::uint32\_t Flags = 0&gt; template&lt;class T&gt; ArchiveType & **cereal::InputArchive**&lt; ArchiveType, **Flags** &gt;::operator& (T && arg) \[inline]

Serializes passed in data. This is a boost compatability layer and is not the preferred way of using cereal. If you are transitioning from boost, use this until you can transition to the operator() overload

## [template&lt;class ArchiveType, std::uint32\_t Flags = 0&gt; template&lt;class ... Types&gt; ArchiveType & **cereal::InputArchive**&lt; ArchiveType, **Flags** &gt;::operator() (Types &&... args) \[inline\]](#template_class_ArchiveType,_std::uint32_t_Flags_=_0__template_class_)

Serializes all passed in data. This is the primary interface for serializing data with an archive

## template&lt;class ArchiveType, std::uint32\_t Flags = 0&gt; template&lt;class T&gt; ArchiveType & **cereal::InputArchive**&lt; ArchiveType, **Flags** &gt;::operator&gt;&gt; (T && arg) \[inline]

Serializes passed in data. This is a boost compatability layer and is not the preferred way of using cereal. If you are transitioning from boost, use this until you can transition to the operator() overload

## template&lt;class ArchiveType, std::uint32\_t Flags = 0&gt; void **cereal::InputArchive**&lt; ArchiveType, **Flags** &gt;::registerPolymorphicName (std::uint32\_t const id, std::string const & name) \[inline]

Registers a polymorphic name string to its unique identifier. After a polymorphic type has been loaded for the first time, it should be registered with its loaded id for future references to it.

## template&lt;class ArchiveType, std::uint32\_t Flags = 0&gt; void **cereal::InputArchive**&lt; ArchiveType, **Flags** &gt;::registerSharedPointer (std::uint32\_t const id, std::shared\_ptr&lt; void &gt; ptr) \[inline]

Registers a shared pointer to its unique identifier. After a shared pointer has been allocated for the first time, it should be registered with its loaded id for future references to it.

## template&lt;class ArchiveType, std::uint32\_t Flags = 0&gt; void **cereal::InputArchive**&lt; ArchiveType, **Flags** &gt;::serializeDeferments () \[inline]

Serializes any data marked for deferment using defer. This will cause any data wrapped in **DeferredData** to be immediately serialized

# [Author](#Author)

Generated automatically by Doxygen for cereal from the source code.

Sat Oct 10 2026 08:08:15 cereal

---

Document: cereal_InputArchive(3) from cereal 1.3.2-r6 (Chainguard OS)
Source: https://github.com/USCiLab/cereal
