mirror of
https://github.com/USCiLab/cereal.git
synced 2025-07-21 02:12:01 +02:00
1378 lines
127 KiB
HTML
1378 lines
127 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.8.17"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>cereal: traits.hpp File Reference</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">cereal
|
|
</div>
|
|
<div id="projectbrief">A C++11 library for serialization</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.17 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search');
|
|
$(document).ready(function() { init_search(); });
|
|
});
|
|
/* @license-end */</script>
|
|
<div id="main-nav"></div>
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<div id="nav-path" class="navpath">
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_d445d0c097210746bce3afd9a77bcad9.html">cereal</a></li><li class="navelem"><a class="el" href="dir_68487379e3503fe9d657f67af15dc5dc.html">details</a></li> </ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#nested-classes">Classes</a> |
|
|
<a href="#define-members">Macros</a> |
|
|
<a href="#typedef-members">Typedefs</a> |
|
|
<a href="#enum-members">Enumerations</a> |
|
|
<a href="#func-members">Functions</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">traits.hpp File Reference<div class="ingroups"><a class="el" href="group__Internal.html">Internal Functionality</a></div></div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p>Internal type trait support.
|
|
<a href="#details">More...</a></p>
|
|
<div class="textblock"><code>#include <type_traits></code><br />
|
|
<code>#include <typeindex></code><br />
|
|
<code>#include "<a class="el" href="macros_8hpp_source.html">cereal/macros.hpp</a>"</code><br />
|
|
<code>#include "<a class="el" href="access_8hpp_source.html">cereal/access.hpp</a>"</code><br />
|
|
</div>
|
|
<p><a href="traits_8hpp_source.html">Go to the source code of this file.</a></p>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
|
|
Classes</h2></td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1delay__static__assert.html">cereal::traits::detail::delay_static_assert< T ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Used to delay a static_assert until template instantiation. <a href="structcereal_1_1traits_1_1detail_1_1delay__static__assert.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1meta__bool__and.html">cereal::traits::detail::meta_bool_and< H, T ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1meta__bool__and_3_01B_01_4.html">cereal::traits::detail::meta_bool_and< B ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1meta__bool__or.html">cereal::traits::detail::meta_bool_or< H, T ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1meta__bool__or_3_01B_01_4.html">cereal::traits::detail::meta_bool_or< B ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1EnableIfHelper.html">cereal::traits::detail::EnableIfHelper< Conditions ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1DisableIfHelper.html">cereal::traits::detail::DisableIfHelper< Conditions ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1get__output__from__input.html">cereal::traits::detail::get_output_from_input< InputArchive ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1get__input__from__output.html">cereal::traits::detail::get_input_from_output< OutputArchive ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1has__member__save.html">cereal::traits::has_member_save< T, A ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1has__member__versioned__save.html">cereal::traits::has_member_versioned_save< T, A ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1is__string.html">cereal::traits::detail::is_string< class ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1is__string_3_01std_1_1basic__string_3_01CharT_00_01Traits_00_01Alloc_01_4_01_4.html">cereal::traits::detail::is_string< std::basic_string< CharT, Traits, Alloc > ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1is__minimal__type.html">cereal::traits::is_minimal_type< T ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1NoConvertBase.html">cereal::traits::detail::NoConvertBase</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Used to help strip away conversion wrappers. <a href="structcereal_1_1traits_1_1detail_1_1NoConvertBase.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1NoConvertConstRef.html">cereal::traits::detail::NoConvertConstRef< Source ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A struct that prevents implicit conversion. <a href="structcereal_1_1traits_1_1detail_1_1NoConvertConstRef.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1NoConvertRef.html">cereal::traits::detail::NoConvertRef< Source ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A struct that prevents implicit conversion. <a href="structcereal_1_1traits_1_1detail_1_1NoConvertRef.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1AnyConvert.html">cereal::traits::detail::AnyConvert</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A type that can implicitly convert to anything else. <a href="structcereal_1_1traits_1_1detail_1_1AnyConvert.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1has__member__load__and__construct__impl.html">cereal::traits::detail::has_member_load_and_construct_impl< T, A ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1has__member__versioned__load__and__construct__impl.html">cereal::traits::detail::has_member_versioned_load_and_construct_impl< T, A ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1has__member__load__and__construct.html">cereal::traits::has_member_load_and_construct< T, A ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Member load and construct check. <a href="structcereal_1_1traits_1_1has__member__load__and__construct.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1has__member__versioned__load__and__construct.html">cereal::traits::has_member_versioned_load_and_construct< T, A ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Member load and construct check (versioned) <a href="structcereal_1_1traits_1_1has__member__versioned__load__and__construct.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1has__load__and__construct.html">cereal::traits::has_load_and_construct< T, A ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Non member load and construct check. <a href="structcereal_1_1traits_1_1has__load__and__construct.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1has__member__split.html">cereal::traits::has_member_split< T, InputArchive, OutputArchive ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1has__non__member__split.html">cereal::traits::has_non_member_split< T, InputArchive, OutputArchive ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1has__invalid__output__versioning.html">cereal::traits::has_invalid_output_versioning< T, OutputArchive ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1has__invalid__input__versioning.html">cereal::traits::has_invalid_input_versioning< T, InputArchive ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1count__specializations.html">cereal::traits::detail::count_specializations< T, A ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Number of specializations detected. <a href="structcereal_1_1traits_1_1detail_1_1count__specializations.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1is__specialized.html">cereal::traits::is_specialized< T, A ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Check if any specialization exists for a type. <a href="structcereal_1_1traits_1_1is__specialized.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1has__minimal__output__serialization.html">cereal::traits::has_minimal_output_serialization< T, OutputArchive ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1has__minimal__input__serialization.html">cereal::traits::has_minimal_input_serialization< T, InputArchive ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1count__output__serializers.html">cereal::traits::detail::count_output_serializers< T, OutputArchive ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The number of output serialization functions available. <a href="structcereal_1_1traits_1_1detail_1_1count__output__serializers.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1is__output__serializable.html">cereal::traits::is_output_serializable< T, OutputArchive ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1count__input__serializers.html">cereal::traits::detail::count_input_serializers< T, InputArchive ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The number of input serialization functions available. <a href="structcereal_1_1traits_1_1detail_1_1count__input__serializers.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1is__input__serializable.html">cereal::traits::is_input_serializable< T, InputArchive ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1base__class__id.html">cereal::traits::detail::base_class_id</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1base__class__id__hash.html">cereal::traits::detail::base_class_id_hash</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1BaseCastBase.html">cereal::traits::detail::BaseCastBase</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Common base type for base class casting. <a href="structcereal_1_1traits_1_1detail_1_1BaseCastBase.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1get__base__class.html">cereal::traits::detail::get_base_class< class ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1get__base__class_3_01Cast_3_01Base_01_4_01_4.html">cereal::traits::detail::get_base_class< Cast< Base > ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1has__minimal__base__class__serialization__impl.html">cereal::traits::detail::has_minimal_base_class_serialization_impl< Cast, Test, Archive, IsBaseCast ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Base class cast, behave as the test. <a href="structcereal_1_1traits_1_1detail_1_1has__minimal__base__class__serialization__impl.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1has__minimal__base__class__serialization__impl_3_01Cast_00_097b19a5d12c91692c0238b4e5b9d7e3a.html">cereal::traits::detail::has_minimal_base_class_serialization_impl< Cast, Test, Archive, false ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Not a base class cast. <a href="structcereal_1_1traits_1_1detail_1_1has__minimal__base__class__serialization__impl_3_01Cast_00_097b19a5d12c91692c0238b4e5b9d7e3a.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1has__minimal__base__class__serialization.html">cereal::traits::has_minimal_base_class_serialization< Cast, Test, Archive ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Checks to see if the base class used in a cast has a minimal serialization. <a href="structcereal_1_1traits_1_1has__minimal__base__class__serialization.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1detail_1_1shared__from__this__wrapper.html">cereal::traits::detail::shared_from_this_wrapper</a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1has__shared__from__this.html">cereal::traits::has_shared_from_this< T ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Determine if T or any base class of T has inherited from std::enable_shared_from_this. <a href="structcereal_1_1traits_1_1has__shared__from__this.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1get__shared__from__this__base.html">cereal::traits::get_shared_from_this_base< T ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Get the type of the base class of T which inherited from std::enable_shared_from_this. <a href="structcereal_1_1traits_1_1get__shared__from__this__base.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1strip__minimal.html">cereal::traits::strip_minimal< T, IsCerealMinimalTrait ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Extracts the true type from something possibly wrapped in a cereal NoConvert. <a href="structcereal_1_1traits_1_1strip__minimal.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1strip__minimal_3_01T_00_01true_01_4.html">cereal::traits::strip_minimal< T, true ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Specialization for types wrapped in a NoConvert. <a href="structcereal_1_1traits_1_1strip__minimal_3_01T_00_01true_01_4.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1is__default__constructible.html">cereal::traits::is_default_constructible< T ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Determines whether the class T can be default constructed by <a class="el" href="classcereal_1_1access.html" title="A class that can be made a friend to give cereal access to non public functions.">cereal::access</a>. <a href="structcereal_1_1traits_1_1is__default__constructible.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1is__same__archive.html">cereal::traits::is_same_archive< ArchiveT, CerealArchiveT ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Checks if the provided archive type is equal to some cereal archive type. <a href="structcereal_1_1traits_1_1is__same__archive.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1TextArchive.html">cereal::traits::TextArchive</a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Type traits only struct used to mark an archive as human readable (text based) <a href="structcereal_1_1traits_1_1TextArchive.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1traits_1_1is__text__archive.html">cereal::traits::is_text_archive< A ></a></td></tr>
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Checks if an archive is a text archive (human readable) <a href="structcereal_1_1traits_1_1is__text__archive.html#details">More...</a><br /></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1detail_1_1Construct.html">cereal::detail::Construct< T, A, Member, MemberVersioned, NonMember, NonMemberVersioned ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1detail_1_1Construct_3_01T_00_01A_00_01false_00_01false_00_01false_00_01false_01_4.html">cereal::detail::Construct< T, A, false, false, false, false ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1detail_1_1Construct_3_01T_00_01A_00_01true_00_01false_00_01false_00_01false_01_4.html">cereal::detail::Construct< T, A, true, false, false, false ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1detail_1_1Construct_3_01T_00_01A_00_01false_00_01true_00_01false_00_01false_01_4.html">cereal::detail::Construct< T, A, false, true, false, false ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1detail_1_1Construct_3_01T_00_01A_00_01false_00_01false_00_01true_00_01false_01_4.html">cereal::detail::Construct< T, A, false, false, true, false ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structcereal_1_1detail_1_1Construct_3_01T_00_01A_00_01false_00_01false_00_01false_00_01true_01_4.html">cereal::detail::Construct< T, A, false, false, false, true ></a></td></tr>
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
|
|
Macros</h2></td></tr>
|
|
<tr class="memitem:a039bc7d4a3e8994d3fd7eedf5cae1666"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a039bc7d4a3e8994d3fd7eedf5cae1666">CEREAL_SETUP_ARCHIVE_TRAITS</a>(InputArchive, OutputArchive)</td></tr>
|
|
<tr class="memdesc:a039bc7d4a3e8994d3fd7eedf5cae1666"><td class="mdescLeft"> </td><td class="mdescRight">Sets up traits that relate an input archive to an output archive. <a href="traits_8hpp.html#a039bc7d4a3e8994d3fd7eedf5cae1666">More...</a><br /></td></tr>
|
|
<tr class="separator:a039bc7d4a3e8994d3fd7eedf5cae1666"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8638d8b3af51cf4f6bed0ed2dae54928"><td class="memItemLeft" align="right" valign="top"><a id="a8638d8b3af51cf4f6bed0ed2dae54928"></a>
|
|
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a8638d8b3af51cf4f6bed0ed2dae54928">CEREAL_MAKE_VERSIONED_TEST</a>   ,0</td></tr>
|
|
<tr class="memdesc:a8638d8b3af51cf4f6bed0ed2dae54928"><td class="mdescLeft"> </td><td class="mdescRight">Used to convert a MAKE_HAS_XXX macro into a versioned variant. <br /></td></tr>
|
|
<tr class="separator:a8638d8b3af51cf4f6bed0ed2dae54928"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ad2fc70d51b619b785c0741568f2012ba"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#ad2fc70d51b619b785c0741568f2012ba">CEREAL_MAKE_HAS_MEMBER_TEST</a>(name, test_name, versioned)</td></tr>
|
|
<tr class="memdesc:ad2fc70d51b619b785c0741568f2012ba"><td class="mdescLeft"> </td><td class="mdescRight">Creates a test for whether a non const member function exists. <a href="traits_8hpp.html#ad2fc70d51b619b785c0741568f2012ba">More...</a><br /></td></tr>
|
|
<tr class="separator:ad2fc70d51b619b785c0741568f2012ba"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:af31f4783772a7f6a3048a793090715cf"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#af31f4783772a7f6a3048a793090715cf">CEREAL_MAKE_HAS_NON_MEMBER_TEST</a>(test_name, func, versioned)</td></tr>
|
|
<tr class="memdesc:af31f4783772a7f6a3048a793090715cf"><td class="mdescLeft"> </td><td class="mdescRight">Creates a test for whether a non const non-member function exists. <a href="traits_8hpp.html#af31f4783772a7f6a3048a793090715cf">More...</a><br /></td></tr>
|
|
<tr class="separator:af31f4783772a7f6a3048a793090715cf"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a669b39fde8f86acef9e5b1470ceb0364"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a669b39fde8f86acef9e5b1470ceb0364">CEREAL_MAKE_HAS_MEMBER_SAVE_IMPL</a>(test_name, versioned)</td></tr>
|
|
<tr class="memdesc:a669b39fde8f86acef9e5b1470ceb0364"><td class="mdescLeft"> </td><td class="mdescRight">Creates a test for whether a member save function exists. <a href="traits_8hpp.html#a669b39fde8f86acef9e5b1470ceb0364">More...</a><br /></td></tr>
|
|
<tr class="separator:a669b39fde8f86acef9e5b1470ceb0364"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5be76cc82813adfc110f793e37636fb1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a5be76cc82813adfc110f793e37636fb1">CEREAL_MAKE_HAS_NON_MEMBER_SAVE_TEST</a>(test_name, versioned)</td></tr>
|
|
<tr class="memdesc:a5be76cc82813adfc110f793e37636fb1"><td class="mdescLeft"> </td><td class="mdescRight">Creates a test for whether a non-member save function exists. <a href="traits_8hpp.html#a5be76cc82813adfc110f793e37636fb1">More...</a><br /></td></tr>
|
|
<tr class="separator:a5be76cc82813adfc110f793e37636fb1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a3d9d56e1b4254790186b1565796fdd35"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a3d9d56e1b4254790186b1565796fdd35">CEREAL_MAKE_HAS_MEMBER_SAVE_MINIMAL_IMPL</a>(test_name, versioned)</td></tr>
|
|
<tr class="memdesc:a3d9d56e1b4254790186b1565796fdd35"><td class="mdescLeft"> </td><td class="mdescRight">Creates implementation details for whether a member save_minimal function exists. <a href="traits_8hpp.html#a3d9d56e1b4254790186b1565796fdd35">More...</a><br /></td></tr>
|
|
<tr class="separator:a3d9d56e1b4254790186b1565796fdd35"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aab60653db33c8898506326963f8a7211"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#aab60653db33c8898506326963f8a7211">CEREAL_MAKE_HAS_MEMBER_SAVE_MINIMAL_HELPERS_IMPL</a>(test_name, versioned)</td></tr>
|
|
<tr class="memdesc:aab60653db33c8898506326963f8a7211"><td class="mdescLeft"> </td><td class="mdescRight">Creates helpers for minimal save functions. <a href="traits_8hpp.html#aab60653db33c8898506326963f8a7211">More...</a><br /></td></tr>
|
|
<tr class="separator:aab60653db33c8898506326963f8a7211"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a33f583ea76bb88656995fa4d5d5e9ade"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a33f583ea76bb88656995fa4d5d5e9ade">CEREAL_MAKE_HAS_MEMBER_SAVE_MINIMAL_TEST</a>(test_name)</td></tr>
|
|
<tr class="memdesc:a33f583ea76bb88656995fa4d5d5e9ade"><td class="mdescLeft"> </td><td class="mdescRight">Creates a test for whether a member save_minimal function exists. <a href="traits_8hpp.html#a33f583ea76bb88656995fa4d5d5e9ade">More...</a><br /></td></tr>
|
|
<tr class="separator:a33f583ea76bb88656995fa4d5d5e9ade"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae7eb2173790b30144a419f33afcd2710"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#ae7eb2173790b30144a419f33afcd2710">CEREAL_MAKE_HAS_NON_MEMBER_SAVE_MINIMAL_TEST</a>(test_name, versioned)</td></tr>
|
|
<tr class="memdesc:ae7eb2173790b30144a419f33afcd2710"><td class="mdescLeft"> </td><td class="mdescRight">Creates a test for whether a non-member save_minimal function exists. <a href="traits_8hpp.html#ae7eb2173790b30144a419f33afcd2710">More...</a><br /></td></tr>
|
|
<tr class="separator:ae7eb2173790b30144a419f33afcd2710"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a41354a9a797549bb6802c0f16435f675"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a41354a9a797549bb6802c0f16435f675">CEREAL_MAKE_HAS_MEMBER_LOAD_MINIMAL_IMPL</a>(test_name, versioned)</td></tr>
|
|
<tr class="memdesc:a41354a9a797549bb6802c0f16435f675"><td class="mdescLeft"> </td><td class="mdescRight">Creates a test for whether a member load_minimal function exists. <a href="traits_8hpp.html#a41354a9a797549bb6802c0f16435f675">More...</a><br /></td></tr>
|
|
<tr class="separator:a41354a9a797549bb6802c0f16435f675"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a4d829a1189314b4adb3b1f6f72d94151"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a4d829a1189314b4adb3b1f6f72d94151">CEREAL_MAKE_HAS_MEMBER_LOAD_MINIMAL_HELPERS_IMPL</a>(load_test_name, save_test_name, save_test_prefix, versioned)</td></tr>
|
|
<tr class="memdesc:a4d829a1189314b4adb3b1f6f72d94151"><td class="mdescLeft"> </td><td class="mdescRight">Creates helpers for minimal load functions. <a href="traits_8hpp.html#a4d829a1189314b4adb3b1f6f72d94151">More...</a><br /></td></tr>
|
|
<tr class="separator:a4d829a1189314b4adb3b1f6f72d94151"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a4497ffc80b9053f731b781d740b98af2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a4497ffc80b9053f731b781d740b98af2">CEREAL_MAKE_HAS_MEMBER_LOAD_MINIMAL_TEST</a>(load_test_name, load_test_prefix)</td></tr>
|
|
<tr class="memdesc:a4497ffc80b9053f731b781d740b98af2"><td class="mdescLeft"> </td><td class="mdescRight">Creates a test for whether a member load_minimal function exists. <a href="traits_8hpp.html#a4497ffc80b9053f731b781d740b98af2">More...</a><br /></td></tr>
|
|
<tr class="separator:a4497ffc80b9053f731b781d740b98af2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a99298ef5f4678723f35d175291eb5770"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a99298ef5f4678723f35d175291eb5770">CEREAL_MAKE_HAS_NON_MEMBER_LOAD_MINIMAL_TEST</a>(test_name, save_name, versioned)</td></tr>
|
|
<tr class="memdesc:a99298ef5f4678723f35d175291eb5770"><td class="mdescLeft"> </td><td class="mdescRight">Creates a test for whether a non-member load_minimal function exists. <a href="traits_8hpp.html#a99298ef5f4678723f35d175291eb5770">More...</a><br /></td></tr>
|
|
<tr class="separator:a99298ef5f4678723f35d175291eb5770"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a65a75d150c050c8a44ab1d9d2b85bba6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a65a75d150c050c8a44ab1d9d2b85bba6">CEREAL_MAKE_HAS_NON_MEMBER_LOAD_AND_CONSTRUCT_TEST</a>(test_name, versioned)</td></tr>
|
|
<tr class="memdesc:a65a75d150c050c8a44ab1d9d2b85bba6"><td class="mdescLeft"> </td><td class="mdescRight">Creates a test for whether a non-member load_and_construct specialization exists. <a href="traits_8hpp.html#a65a75d150c050c8a44ab1d9d2b85bba6">More...</a><br /></td></tr>
|
|
<tr class="separator:a65a75d150c050c8a44ab1d9d2b85bba6"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a33ec65e257576ae208d6a71cf01c4258"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a33ec65e257576ae208d6a71cf01c4258">CEREAL_MAKE_IS_SPECIALIZED_IMPL</a>(name)</td></tr>
|
|
<tr class="memdesc:a33ec65e257576ae208d6a71cf01c4258"><td class="mdescLeft"> </td><td class="mdescRight">Create a test for a cereal::specialization entry. <a href="traits_8hpp.html#a33ec65e257576ae208d6a71cf01c4258">More...</a><br /></td></tr>
|
|
<tr class="separator:a33ec65e257576ae208d6a71cf01c4258"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a7e6519141d71272bbe5db25d01d175ad"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a7e6519141d71272bbe5db25d01d175ad">CEREAL_MAKE_IS_SPECIALIZED_ASSERT</a>(name, versioned_name, print_name, spec_name)</td></tr>
|
|
<tr class="memdesc:a7e6519141d71272bbe5db25d01d175ad"><td class="mdescLeft"> </td><td class="mdescRight">Create the static assertion for some specialization. <a href="traits_8hpp.html#a7e6519141d71272bbe5db25d01d175ad">More...</a><br /></td></tr>
|
|
<tr class="separator:a7e6519141d71272bbe5db25d01d175ad"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:af566f627f0de18c31e2bbb21a01cce70"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#af566f627f0de18c31e2bbb21a01cce70">CEREAL_MAKE_IS_SPECIALIZED</a>(name, versioned_name, spec_name)</td></tr>
|
|
<tr class="memdesc:af566f627f0de18c31e2bbb21a01cce70"><td class="mdescLeft"> </td><td class="mdescRight">Generates a test for specialization for versioned and unversioned functions. <a href="traits_8hpp.html#af566f627f0de18c31e2bbb21a01cce70">More...</a><br /></td></tr>
|
|
<tr class="separator:af566f627f0de18c31e2bbb21a01cce70"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a29490687675183194498a843f7beeb8b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a29490687675183194498a843f7beeb8b">CEREAL_ARCHIVE_RESTRICT</a>(INTYPE, OUTTYPE)   typename std::enable_if<<a class="el" href="structcereal_1_1traits_1_1is__same__archive.html">cereal::traits::is_same_archive</a><Archive, INTYPE>::value || <a class="el" href="structcereal_1_1traits_1_1is__same__archive.html">cereal::traits::is_same_archive</a><Archive, OUTTYPE>::value, void>::type</td></tr>
|
|
<tr class="memdesc:a29490687675183194498a843f7beeb8b"><td class="mdescLeft"> </td><td class="mdescRight">A macro to use to restrict which types of archives your function will work for. <a href="traits_8hpp.html#a29490687675183194498a843f7beeb8b">More...</a><br /></td></tr>
|
|
<tr class="separator:a29490687675183194498a843f7beeb8b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
|
|
Typedefs</h2></td></tr>
|
|
<tr class="memitem:a32b99987a136bc56cb30707526c9ba2f"><td class="memItemLeft" align="right" valign="top"><a id="a32b99987a136bc56cb30707526c9ba2f"></a>
|
|
using </td><td class="memItemRight" valign="bottom"><b>cereal::traits::yes</b> = std::true_type</td></tr>
|
|
<tr class="separator:a32b99987a136bc56cb30707526c9ba2f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ad22419d99e8d081eef29f2f99e5cb54c"><td class="memItemLeft" align="right" valign="top"><a id="ad22419d99e8d081eef29f2f99e5cb54c"></a>
|
|
using </td><td class="memItemRight" valign="bottom"><b>cereal::traits::no</b> = std::false_type</td></tr>
|
|
<tr class="separator:ad22419d99e8d081eef29f2f99e5cb54c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a42e5f793ba5a1b3d2fd674d7334b12bd"><td class="memTemplParams" colspan="2">template<bool ... Conditions> </td></tr>
|
|
<tr class="memitem:a42e5f793ba5a1b3d2fd674d7334b12bd"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a42e5f793ba5a1b3d2fd674d7334b12bd">EnableIf</a> = typename detail::EnableIfHelper< Conditions... >::type</td></tr>
|
|
<tr class="memdesc:a42e5f793ba5a1b3d2fd674d7334b12bd"><td class="mdescLeft"> </td><td class="mdescRight">Provides a way to enable a function if conditions are met. <a href="traits_8hpp.html#a42e5f793ba5a1b3d2fd674d7334b12bd">More...</a><br /></td></tr>
|
|
<tr class="separator:a42e5f793ba5a1b3d2fd674d7334b12bd"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a07719740a7cec6692b44244201a92603"><td class="memTemplParams" colspan="2">template<bool ... Conditions> </td></tr>
|
|
<tr class="memitem:a07719740a7cec6692b44244201a92603"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#a07719740a7cec6692b44244201a92603">DisableIf</a> = typename detail::DisableIfHelper< Conditions... >::type</td></tr>
|
|
<tr class="memdesc:a07719740a7cec6692b44244201a92603"><td class="mdescLeft"> </td><td class="mdescRight">Provides a way to disable a function if conditions are met. <a href="traits_8hpp.html#a07719740a7cec6692b44244201a92603">More...</a><br /></td></tr>
|
|
<tr class="separator:a07719740a7cec6692b44244201a92603"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae185068d4b912e2d20c03d35ab553d59"><td class="memTemplParams" colspan="2"><a id="ae185068d4b912e2d20c03d35ab553d59"></a>
|
|
template<class A > </td></tr>
|
|
<tr class="memitem:ae185068d4b912e2d20c03d35ab553d59"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#ae185068d4b912e2d20c03d35ab553d59">cereal::traits::detail::decay_archive</a> = typename std::decay< typename strip_minimal< A >::type >::type</td></tr>
|
|
<tr class="memdesc:ae185068d4b912e2d20c03d35ab553d59"><td class="mdescLeft"> </td><td class="mdescRight">Removes all qualifiers and minimal wrappers from an archive. <br /></td></tr>
|
|
<tr class="separator:ae185068d4b912e2d20c03d35ab553d59"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
|
|
Enumerations</h2></td></tr>
|
|
<tr class="memitem:aafd74e5beca7e112de8b2e20ef41d973"><td class="memItemLeft" align="right" valign="top"><a id="aafd74e5beca7e112de8b2e20ef41d973"></a>enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="traits_8hpp.html#aafd74e5beca7e112de8b2e20ef41d973">cereal::traits::detail::sfinae</a> </td></tr>
|
|
<tr class="memdesc:aafd74e5beca7e112de8b2e20ef41d973"><td class="mdescLeft"> </td><td class="mdescRight">Return type for SFINAE Enablers. <br /></td></tr>
|
|
<tr class="separator:aafd74e5beca7e112de8b2e20ef41d973"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
|
Functions</h2></td></tr>
|
|
<tr class="memitem:a272f835b66fc9503a8c832007612a7f1"><td class="memItemLeft" align="right" valign="top"><a id="a272f835b66fc9503a8c832007612a7f1"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_HAS_MEMBER_TEST</b> (serialize, serialize,)</td></tr>
|
|
<tr class="separator:a272f835b66fc9503a8c832007612a7f1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aba4330c797a0db80059c74ce0d298cf7"><td class="memItemLeft" align="right" valign="top"><a id="aba4330c797a0db80059c74ce0d298cf7"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_HAS_MEMBER_TEST</b> (serialize, versioned_serialize, <a class="el" href="traits_8hpp.html#a8638d8b3af51cf4f6bed0ed2dae54928">CEREAL_MAKE_VERSIONED_TEST</a>)</td></tr>
|
|
<tr class="separator:aba4330c797a0db80059c74ce0d298cf7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a84537b1c09daf1cfb31c687d3844336c"><td class="memItemLeft" align="right" valign="top"><a id="a84537b1c09daf1cfb31c687d3844336c"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_HAS_NON_MEMBER_TEST</b> (serialize, <a class="el" href="macros_8hpp.html#ad6b40d3472fa3d7f2148657c5bd6a07a">CEREAL_SERIALIZE_FUNCTION_NAME</a>,)</td></tr>
|
|
<tr class="separator:a84537b1c09daf1cfb31c687d3844336c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a1e4703a037e82b58fa568ea1a869932b"><td class="memItemLeft" align="right" valign="top"><a id="a1e4703a037e82b58fa568ea1a869932b"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_HAS_NON_MEMBER_TEST</b> (versioned_serialize, <a class="el" href="macros_8hpp.html#ad6b40d3472fa3d7f2148657c5bd6a07a">CEREAL_SERIALIZE_FUNCTION_NAME</a>, <a class="el" href="traits_8hpp.html#a8638d8b3af51cf4f6bed0ed2dae54928">CEREAL_MAKE_VERSIONED_TEST</a>)</td></tr>
|
|
<tr class="separator:a1e4703a037e82b58fa568ea1a869932b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a91965ae6af453b52a6479d4e9a8e32f9"><td class="memItemLeft" align="right" valign="top"><a id="a91965ae6af453b52a6479d4e9a8e32f9"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_HAS_MEMBER_TEST</b> (load, load,)</td></tr>
|
|
<tr class="separator:a91965ae6af453b52a6479d4e9a8e32f9"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a5be14e72c1af859d2f57da9c6bee521c"><td class="memItemLeft" align="right" valign="top"><a id="a5be14e72c1af859d2f57da9c6bee521c"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_HAS_MEMBER_TEST</b> (load, versioned_load, <a class="el" href="traits_8hpp.html#a8638d8b3af51cf4f6bed0ed2dae54928">CEREAL_MAKE_VERSIONED_TEST</a>)</td></tr>
|
|
<tr class="separator:a5be14e72c1af859d2f57da9c6bee521c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aba309d0c0b8990cc41264a735f6fe8a0"><td class="memItemLeft" align="right" valign="top"><a id="aba309d0c0b8990cc41264a735f6fe8a0"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_HAS_NON_MEMBER_TEST</b> (load, <a class="el" href="macros_8hpp.html#a854de4fbe2b80753b27264b7dda740e8">CEREAL_LOAD_FUNCTION_NAME</a>,)</td></tr>
|
|
<tr class="separator:aba309d0c0b8990cc41264a735f6fe8a0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a83ef3b068e4c18caaf90c2d3adb3b2c0"><td class="memItemLeft" align="right" valign="top"><a id="a83ef3b068e4c18caaf90c2d3adb3b2c0"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_HAS_NON_MEMBER_TEST</b> (versioned_load, <a class="el" href="macros_8hpp.html#a854de4fbe2b80753b27264b7dda740e8">CEREAL_LOAD_FUNCTION_NAME</a>, <a class="el" href="traits_8hpp.html#a8638d8b3af51cf4f6bed0ed2dae54928">CEREAL_MAKE_VERSIONED_TEST</a>)</td></tr>
|
|
<tr class="separator:a83ef3b068e4c18caaf90c2d3adb3b2c0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a57b1b50cefc0d028cae13d4bb85b0d45"><td class="memItemLeft" align="right" valign="top"><a id="a57b1b50cefc0d028cae13d4bb85b0d45"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::detail::CEREAL_MAKE_IS_SPECIALIZED_IMPL</b> (member_serialize)</td></tr>
|
|
<tr class="separator:a57b1b50cefc0d028cae13d4bb85b0d45"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa3d52f02ddb07b4750b1d342db245610"><td class="memItemLeft" align="right" valign="top"><a id="aa3d52f02ddb07b4750b1d342db245610"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::detail::CEREAL_MAKE_IS_SPECIALIZED_IMPL</b> (member_load_save)</td></tr>
|
|
<tr class="separator:aa3d52f02ddb07b4750b1d342db245610"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa8074cb2fe6eb50846f5adf3edfcbcd2"><td class="memItemLeft" align="right" valign="top"><a id="aa8074cb2fe6eb50846f5adf3edfcbcd2"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::detail::CEREAL_MAKE_IS_SPECIALIZED_IMPL</b> (member_load_save_minimal)</td></tr>
|
|
<tr class="separator:aa8074cb2fe6eb50846f5adf3edfcbcd2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a8e103445b8259599a8c5a2d784dc0ca0"><td class="memItemLeft" align="right" valign="top"><a id="a8e103445b8259599a8c5a2d784dc0ca0"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::detail::CEREAL_MAKE_IS_SPECIALIZED_IMPL</b> (non_member_serialize)</td></tr>
|
|
<tr class="separator:a8e103445b8259599a8c5a2d784dc0ca0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a64c27264ebd40cb17fbdbb65fefef319"><td class="memItemLeft" align="right" valign="top"><a id="a64c27264ebd40cb17fbdbb65fefef319"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::detail::CEREAL_MAKE_IS_SPECIALIZED_IMPL</b> (non_member_load_save)</td></tr>
|
|
<tr class="separator:a64c27264ebd40cb17fbdbb65fefef319"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a57714ba26e46777c7acddca859a047ba"><td class="memItemLeft" align="right" valign="top"><a id="a57714ba26e46777c7acddca859a047ba"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::detail::CEREAL_MAKE_IS_SPECIALIZED_IMPL</b> (non_member_load_save_minimal)</td></tr>
|
|
<tr class="separator:a57714ba26e46777c7acddca859a047ba"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a37e44b59c6260570584a890efa520a8b"><td class="memItemLeft" align="right" valign="top"><a id="a37e44b59c6260570584a890efa520a8b"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_IS_SPECIALIZED</b> (member_serialize, member_versioned_serialize, member_serialize)</td></tr>
|
|
<tr class="separator:a37e44b59c6260570584a890efa520a8b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6b352be989824571c05f6dc304d4df71"><td class="memItemLeft" align="right" valign="top"><a id="a6b352be989824571c05f6dc304d4df71"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_IS_SPECIALIZED</b> (non_member_serialize, non_member_versioned_serialize, non_member_serialize)</td></tr>
|
|
<tr class="separator:a6b352be989824571c05f6dc304d4df71"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:adcb4eb583516b360022a255f9703b96d"><td class="memItemLeft" align="right" valign="top"><a id="adcb4eb583516b360022a255f9703b96d"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_IS_SPECIALIZED</b> (member_save, member_versioned_save, member_load_save)</td></tr>
|
|
<tr class="separator:adcb4eb583516b360022a255f9703b96d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6d2f0c0f9cdf1701d6be30bfa69107d3"><td class="memItemLeft" align="right" valign="top"><a id="a6d2f0c0f9cdf1701d6be30bfa69107d3"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_IS_SPECIALIZED</b> (non_member_save, non_member_versioned_save, non_member_load_save)</td></tr>
|
|
<tr class="separator:a6d2f0c0f9cdf1701d6be30bfa69107d3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:afbe788b8d27ce8494df42e108624d387"><td class="memItemLeft" align="right" valign="top"><a id="afbe788b8d27ce8494df42e108624d387"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_IS_SPECIALIZED</b> (member_load, member_versioned_load, member_load_save)</td></tr>
|
|
<tr class="separator:afbe788b8d27ce8494df42e108624d387"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ac6314b143f33f837572c766b8822b5d2"><td class="memItemLeft" align="right" valign="top"><a id="ac6314b143f33f837572c766b8822b5d2"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_IS_SPECIALIZED</b> (non_member_load, non_member_versioned_load, non_member_load_save)</td></tr>
|
|
<tr class="separator:ac6314b143f33f837572c766b8822b5d2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a04d88853aa20506f95abd46b95e40bac"><td class="memItemLeft" align="right" valign="top"><a id="a04d88853aa20506f95abd46b95e40bac"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_IS_SPECIALIZED</b> (member_save_minimal, member_versioned_save_minimal, member_load_save_minimal)</td></tr>
|
|
<tr class="separator:a04d88853aa20506f95abd46b95e40bac"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aa492e93c41a9b6fb524b68f925f489a4"><td class="memItemLeft" align="right" valign="top"><a id="aa492e93c41a9b6fb524b68f925f489a4"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_IS_SPECIALIZED</b> (non_member_save_minimal, non_member_versioned_save_minimal, non_member_load_save_minimal)</td></tr>
|
|
<tr class="separator:aa492e93c41a9b6fb524b68f925f489a4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6a5b663e3c4b1bc658070b443829e669"><td class="memItemLeft" align="right" valign="top"><a id="a6a5b663e3c4b1bc658070b443829e669"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_IS_SPECIALIZED</b> (member_load_minimal, member_versioned_load_minimal, member_load_save_minimal)</td></tr>
|
|
<tr class="separator:a6a5b663e3c4b1bc658070b443829e669"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a32e21033492e984bb43e0ac0ee72fabe"><td class="memItemLeft" align="right" valign="top"><a id="a32e21033492e984bb43e0ac0ee72fabe"></a>
|
|
 </td><td class="memItemRight" valign="bottom"><b>cereal::traits::CEREAL_MAKE_IS_SPECIALIZED</b> (non_member_load_minimal, non_member_versioned_load_minimal, non_member_load_save_minimal)</td></tr>
|
|
<tr class="separator:a32e21033492e984bb43e0ac0ee72fabe"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><p>Internal type trait support. </p>
|
|
</div><h2 class="groupheader">Macro Definition Documentation</h2>
|
|
<a id="a29490687675183194498a843f7beeb8b"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a29490687675183194498a843f7beeb8b">◆ </a></span>CEREAL_ARCHIVE_RESTRICT</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_ARCHIVE_RESTRICT</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">INTYPE, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">OUTTYPE </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td>   typename std::enable_if<<a class="el" href="structcereal_1_1traits_1_1is__same__archive.html">cereal::traits::is_same_archive</a><Archive, INTYPE>::value || <a class="el" href="structcereal_1_1traits_1_1is__same__archive.html">cereal::traits::is_same_archive</a><Archive, OUTTYPE>::value, void>::type</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>A macro to use to restrict which types of archives your function will work for. </p>
|
|
<p>This requires you to have a template class parameter named Archive and replaces the void return type for your function.</p>
|
|
<p>INTYPE refers to the input archive type you wish to restrict on. OUTTYPE refers to the output archive type you wish to restrict on.</p>
|
|
<p>For example, if we want to limit a serialize to only work with binary serialization:</p>
|
|
<div class="fragment"><div class="line"><span class="keyword">template</span> <<span class="keyword">class</span> Archive></div>
|
|
<div class="line"><a class="code" href="traits_8hpp.html#a29490687675183194498a843f7beeb8b">CEREAL_ARCHIVE_RESTRICT</a>(BinaryInputArchive, BinaryOutputArchive)</div>
|
|
<div class="line"><a class="code" href="functional_8hpp.html#a02f9cfc9a4055c8a49eb050b02cd3357">serialize</a>( Archive & ar, MyCoolType & m )</div>
|
|
<div class="line">{</div>
|
|
<div class="line"> ar & m;</div>
|
|
<div class="line">}</div>
|
|
</div><!-- fragment --><p>If you need to do more restrictions in your enable_if, you will need to do this by hand. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a4d829a1189314b4adb3b1f6f72d94151"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a4d829a1189314b4adb3b1f6f72d94151">◆ </a></span>CEREAL_MAKE_HAS_MEMBER_LOAD_MINIMAL_HELPERS_IMPL</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_HAS_MEMBER_LOAD_MINIMAL_HELPERS_IMPL</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">load_test_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">save_test_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">save_test_prefix, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">versioned </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">namespace </span>detail \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class T, class A, bool Valid> \</div>
|
|
<div class="line"> struct has_member_##load_test_name##_wrapper : std::false_type {}; \</div>
|
|
<div class="line"> \</div>
|
|
<div class="line"> template <class T, class A> \</div>
|
|
<div class="line"> struct has_member_##load_test_name##_wrapper<T, A, true> \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> using AOut = <span class="keyword">typename</span> detail::get_output_from_input<A>::type; \</div>
|
|
<div class="line"> \</div>
|
|
<div class="line"> static_assert( has_member_##save_test_prefix##_minimal<T, AOut>::value, \</div>
|
|
<div class="line"> <span class="stringliteral">"cereal detected member "</span> #load_test_name <span class="stringliteral">" but no valid member "</span> #save_test_name <span class="stringliteral">". \n "</span> \</div>
|
|
<div class="line"> <span class="stringliteral">"cannot evaluate correctness of "</span> #load_test_name <span class="stringliteral">" without valid "</span> #save_test_name <span class="stringliteral">"."</span> ); \</div>
|
|
<div class="line"> \</div>
|
|
<div class="line"> using SaveType = <span class="keyword">typename</span> detail::get_member_##save_test_prefix##_minimal_type<T, AOut, true>::type; \</div>
|
|
<div class="line"> const <span class="keyword">static</span> <span class="keywordtype">bool</span> value = has_member_##load_test_name##_impl<T, A>::value; \</div>
|
|
<div class="line"> const <span class="keyword">static</span> <span class="keywordtype">bool</span> valid = has_member_##load_test_name##_type_impl<T, A, SaveType>::value; \</div>
|
|
<div class="line"> \</div>
|
|
<div class="line"> static_assert( valid || !value, <span class="stringliteral">"cereal detected different or invalid types in corresponding member "</span> \</div>
|
|
<div class="line"> #load_test_name <span class="stringliteral">" and "</span> #save_test_name <span class="stringliteral">" functions. \n "</span> \</div>
|
|
<div class="line"> <span class="stringliteral">"the paramater to "</span> #load_test_name <span class="stringliteral">" must be a constant reference to the type that "</span> \</div>
|
|
<div class="line"> #save_test_name <span class="stringliteral">" returns."</span> ); \</div>
|
|
<div class="line"> }; \</div>
|
|
<div class="line"> } <span class="comment">/* end namespace detail */</span></div>
|
|
</div><!-- fragment -->
|
|
<p>Creates helpers for minimal load functions. </p>
|
|
<p>The has_member_*_wrapper structs ensure that the load and save types for the requested function type match appropriately.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">load_test_name</td><td>The name to give the test (e.g. load_minimal or versioned_load_minimal) </td></tr>
|
|
<tr><td class="paramname">save_test_name</td><td>The name to give the test (e.g. save_minimal or versioned_save_minimal, should match the load name. </td></tr>
|
|
<tr><td class="paramname">save_test_prefix</td><td>The name to give the test (e.g. save_minimal or versioned_save_minimal, should match the load name, without the trailing "_minimal" (e.g. save or versioned_save). Needed because the preprocessor is an abomination. </td></tr>
|
|
<tr><td class="paramname">versioned</td><td>Either blank or the macro CEREAL_MAKE_VERSIONED_TEST </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a41354a9a797549bb6802c0f16435f675"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a41354a9a797549bb6802c0f16435f675">◆ </a></span>CEREAL_MAKE_HAS_MEMBER_LOAD_MINIMAL_IMPL</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_HAS_MEMBER_LOAD_MINIMAL_IMPL</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">test_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">versioned </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">namespace </span>detail \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class T, class A> \</div>
|
|
<div class="line"> struct has_member_##test_name##_impl \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class TT, class AA> \</div>
|
|
<div class="line"> static <span class="keyword">auto</span> test(<span class="keywordtype">int</span>) -> decltype( cereal::access::member_load_minimal( \</div>
|
|
<div class="line"> std::declval<AA const &>(), \</div>
|
|
<div class="line"> std::declval<TT &>(), AnyConvert() versioned ), yes()); \</div>
|
|
<div class="line"> template <class, class> <span class="keyword">static</span> no test(...); \</div>
|
|
<div class="line"> static <span class="keyword">const</span> <span class="keywordtype">bool</span> value = std::is_same<decltype(test<T, A>(0)), yes>::value; \</div>
|
|
<div class="line"> }; \</div>
|
|
<div class="line"> template <class T, class A, class U> \</div>
|
|
<div class="line"> struct has_member_##test_name##_type_impl \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class TT, class AA, class UU> \</div>
|
|
<div class="line"> static <span class="keyword">auto</span> test(<span class="keywordtype">int</span>) -> decltype( cereal::access::member_load_minimal( \</div>
|
|
<div class="line"> std::declval<AA const &>(), \</div>
|
|
<div class="line"> std::declval<TT &>(), NoConvertConstRef<UU>() versioned ), yes()); \</div>
|
|
<div class="line"> template <class, class, class> <span class="keyword">static</span> no test(...); \</div>
|
|
<div class="line"> static <span class="keyword">const</span> <span class="keywordtype">bool</span> value = std::is_same<decltype(test<T, A, U>(0)), yes>::value; \</div>
|
|
<div class="line"> \</div>
|
|
<div class="line"> }; \</div>
|
|
<div class="line"> } <span class="comment">/* end namespace detail */</span></div>
|
|
</div><!-- fragment -->
|
|
<p>Creates a test for whether a member load_minimal function exists. </p>
|
|
<p>This creates a class derived from std::integral_constant that will be true if the type has the proper member function for the given archive.</p>
|
|
<p>Our strategy here is to first check if a function matching the signature more or less exists (allow anything like load_minimal(xxx) using AnyConvert, and then secondly enforce that it has the correct signature using NoConvertConstRef</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">test_name</td><td>The name to give the test (e.g. load_minimal or versioned_load_minimal) </td></tr>
|
|
<tr><td class="paramname">versioned</td><td>Either blank or the macro CEREAL_MAKE_VERSIONED_TEST </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a4497ffc80b9053f731b781d740b98af2"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a4497ffc80b9053f731b781d740b98af2">◆ </a></span>CEREAL_MAKE_HAS_MEMBER_LOAD_MINIMAL_TEST</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_HAS_MEMBER_LOAD_MINIMAL_TEST</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">load_test_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">load_test_prefix </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> A> \</div>
|
|
<div class="line"> struct has_member_##load_test_prefix##_minimal : std::integral_constant<bool, \</div>
|
|
<div class="line"> detail::has_member_##load_test_name##_wrapper<T, A, detail::has_member_##load_test_name##_impl<T, A>::value>::value> {};</div>
|
|
</div><!-- fragment -->
|
|
<p>Creates a test for whether a member load_minimal function exists. </p>
|
|
<p>This creates a class derived from std::integral_constant that will be true if the type has the proper member function for the given archive.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">load_test_name</td><td>The name to give the test (e.g. load_minimal or versioned_load_minimal) </td></tr>
|
|
<tr><td class="paramname">load_test_prefix</td><td>The above parameter minus the trailing "_minimal" </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a669b39fde8f86acef9e5b1470ceb0364"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a669b39fde8f86acef9e5b1470ceb0364">◆ </a></span>CEREAL_MAKE_HAS_MEMBER_SAVE_IMPL</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_HAS_MEMBER_SAVE_IMPL</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">test_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">versioned </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">namespace </span>detail \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class T, class A> \</div>
|
|
<div class="line"> struct has_member_##test_name##_impl \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class TT, class AA> \</div>
|
|
<div class="line"> static <span class="keyword">auto</span> test(<span class="keywordtype">int</span>) -> decltype( cereal::access::member_save( std::declval<AA&>(), \</div>
|
|
<div class="line"> std::declval<TT const &>() versioned ), yes()); \</div>
|
|
<div class="line"> template <class, class> <span class="keyword">static</span> no test(...); \</div>
|
|
<div class="line"> static <span class="keyword">const</span> <span class="keywordtype">bool</span> value = std::is_same<decltype(test<T, A>(0)), yes>::value; \</div>
|
|
<div class="line"> \</div>
|
|
<div class="line"> template <class TT, class AA> \</div>
|
|
<div class="line"> static <span class="keyword">auto</span> test2(<span class="keywordtype">int</span>) -> decltype( cereal::access::member_save_non_const( \</div>
|
|
<div class="line"> std::declval<AA &>(), \</div>
|
|
<div class="line"> std::declval<<span class="keyword">typename</span> std::remove_const<TT>::type&>() versioned ), yes()); \</div>
|
|
<div class="line"> template <class, class> <span class="keyword">static</span> no test2(...); \</div>
|
|
<div class="line"> static <span class="keyword">const</span> <span class="keywordtype">bool</span> not_const_type = std::is_same<decltype(test2<T, A>(0)), yes>::value; \</div>
|
|
<div class="line"> }; \</div>
|
|
<div class="line"> } <span class="comment">/* end namespace detail */</span></div>
|
|
</div><!-- fragment -->
|
|
<p>Creates a test for whether a member save function exists. </p>
|
|
<p>This creates a class derived from std::integral_constant that will be true if the type has the proper member function for the given archive.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">test_name</td><td>The name to give the test (e.g. save or versioned_save) </td></tr>
|
|
<tr><td class="paramname">versioned</td><td>Either blank or the macro CEREAL_MAKE_VERSIONED_TEST </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aab60653db33c8898506326963f8a7211"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aab60653db33c8898506326963f8a7211">◆ </a></span>CEREAL_MAKE_HAS_MEMBER_SAVE_MINIMAL_HELPERS_IMPL</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_HAS_MEMBER_SAVE_MINIMAL_HELPERS_IMPL</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">test_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">versioned </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">namespace </span>detail \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class T, class A, bool Valid> \</div>
|
|
<div class="line"> struct get_member_##test_name##_type { <span class="keyword">using</span> <a class="code" href="bitset_8hpp.html#a4f5825a3267dd05e798bed76cf7e29cc">type</a> = void; }; \</div>
|
|
<div class="line"> \</div>
|
|
<div class="line"> template <class T, class A> \</div>
|
|
<div class="line"> struct get_member_##test_name##_type<T, A, true> \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> using <a class="code" href="bitset_8hpp.html#a4f5825a3267dd05e798bed76cf7e29cc">type</a> = decltype( cereal::access::member_save_minimal( std::declval<A const &>(), \</div>
|
|
<div class="line"> std::declval<T const &>() versioned ) ); \</div>
|
|
<div class="line"> }; \</div>
|
|
<div class="line"> } <span class="comment">/* end namespace detail */</span></div>
|
|
</div><!-- fragment -->
|
|
<p>Creates helpers for minimal save functions. </p>
|
|
<p>The get_member_*_type structs allow access to the return type of a save_minimal, assuming that the function actually exists. If the function does not exist, the type will be void.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">test_name</td><td>The name to give the test (e.g. save_minimal or versioned_save_minimal) </td></tr>
|
|
<tr><td class="paramname">versioned</td><td>Either blank or the macro CEREAL_MAKE_VERSIONED_TEST </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a3d9d56e1b4254790186b1565796fdd35"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a3d9d56e1b4254790186b1565796fdd35">◆ </a></span>CEREAL_MAKE_HAS_MEMBER_SAVE_MINIMAL_IMPL</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_HAS_MEMBER_SAVE_MINIMAL_IMPL</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">test_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">versioned </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">namespace </span>detail \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class T, class A> \</div>
|
|
<div class="line"> struct has_member_##test_name##_impl \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class TT, class AA> \</div>
|
|
<div class="line"> static <span class="keyword">auto</span> test(<span class="keywordtype">int</span>) -> decltype( cereal::access::member_save_minimal( \</div>
|
|
<div class="line"> std::declval<AA const &>(), \</div>
|
|
<div class="line"> std::declval<TT const &>() versioned ), yes()); \</div>
|
|
<div class="line"> template <class, class> <span class="keyword">static</span> no test(...); \</div>
|
|
<div class="line"> static <span class="keyword">const</span> <span class="keywordtype">bool</span> value = std::is_same<decltype(test<T, A>(0)), yes>::value; \</div>
|
|
<div class="line"> \</div>
|
|
<div class="line"> template <class TT, class AA> \</div>
|
|
<div class="line"> static <span class="keyword">auto</span> test2(<span class="keywordtype">int</span>) -> decltype( cereal::access::member_save_minimal_non_const( \</div>
|
|
<div class="line"> std::declval<AA const &>(), \</div>
|
|
<div class="line"> std::declval<<span class="keyword">typename</span> std::remove_const<TT>::type&>() versioned ), yes()); \</div>
|
|
<div class="line"> template <class, class> <span class="keyword">static</span> no test2(...); \</div>
|
|
<div class="line"> static <span class="keyword">const</span> <span class="keywordtype">bool</span> not_const_type = std::is_same<decltype(test2<T, A>(0)), yes>::value; \</div>
|
|
<div class="line"> \</div>
|
|
<div class="line"> static <span class="keyword">const</span> <span class="keywordtype">bool</span> valid = value || !not_const_type; \</div>
|
|
<div class="line"> }; \</div>
|
|
<div class="line"> } <span class="comment">/* end namespace detail */</span></div>
|
|
</div><!-- fragment -->
|
|
<p>Creates implementation details for whether a member save_minimal function exists. </p>
|
|
<p>This creates a class derived from std::integral_constant that will be true if the type has the proper member function for the given archive.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">test_name</td><td>The name to give the test (e.g. save_minimal or versioned_save_minimal) </td></tr>
|
|
<tr><td class="paramname">versioned</td><td>Either blank or the macro CEREAL_MAKE_VERSIONED_TEST </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a33f583ea76bb88656995fa4d5d5e9ade"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a33f583ea76bb88656995fa4d5d5e9ade">◆ </a></span>CEREAL_MAKE_HAS_MEMBER_SAVE_MINIMAL_TEST</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_HAS_MEMBER_SAVE_MINIMAL_TEST</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">test_name</td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> A> \</div>
|
|
<div class="line"> struct has_member_##test_name : std::integral_constant<bool, detail::has_member_##test_name##_impl<T, A>::value> \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> using check = <span class="keyword">typename</span> detail::has_member_##test_name##_impl<T, A>; \</div>
|
|
<div class="line"> static_assert( check::valid, \</div>
|
|
<div class="line"> <span class="stringliteral">"cereal detected a non-const member "</span> #test_name <span class="stringliteral">". \n "</span> \</div>
|
|
<div class="line"> #test_name <span class="stringliteral">" member functions must always be const"</span> ); \</div>
|
|
<div class="line"> \</div>
|
|
<div class="line"> using <a class="code" href="bitset_8hpp.html#a4f5825a3267dd05e798bed76cf7e29cc">type</a> = <span class="keyword">typename</span> detail::get_member_##test_name##_type<T, A, check::value>::type; \</div>
|
|
<div class="line"> static_assert( (check::value && is_minimal_type<type>::value) || !check::value, \</div>
|
|
<div class="line"> <span class="stringliteral">"cereal detected a member "</span> #test_name <span class="stringliteral">" with an invalid return type. \n "</span> \</div>
|
|
<div class="line"> <span class="stringliteral">"return type must be arithmetic or string"</span> ); \</div>
|
|
<div class="line"> };</div>
|
|
</div><!-- fragment -->
|
|
<p>Creates a test for whether a member save_minimal function exists. </p>
|
|
<p>This creates a class derived from std::integral_constant that will be true if the type has the proper member function for the given archive.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">test_name</td><td>The name to give the test (e.g. save_minimal or versioned_save_minimal) </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ad2fc70d51b619b785c0741568f2012ba"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ad2fc70d51b619b785c0741568f2012ba">◆ </a></span>CEREAL_MAKE_HAS_MEMBER_TEST</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_HAS_MEMBER_TEST</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">test_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">versioned </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">namespace </span>detail \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class T, class A> \</div>
|
|
<div class="line"> struct has_member_##name##_##versioned##_impl \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class TT, class AA> \</div>
|
|
<div class="line"> static <span class="keyword">auto</span> test(<span class="keywordtype">int</span>) -> decltype( cereal::access::member_##name( std::declval<AA&>(), std::declval<TT&>() versioned ), yes()); \</div>
|
|
<div class="line"> template <class, class> \</div>
|
|
<div class="line"> static no test(...); \</div>
|
|
<div class="line"> static <span class="keyword">const</span> <span class="keywordtype">bool</span> value = std::is_same<decltype(test<T, A>(0)), yes>::value; \</div>
|
|
<div class="line"> }; \</div>
|
|
<div class="line"> } <span class="comment">/* end namespace detail */</span> \</div>
|
|
<div class="line"> template <class T, class A> \</div>
|
|
<div class="line"> struct has_member_##test_name : std::integral_constant<bool, detail::has_member_##name##_##versioned##_impl<T, A>::value> {}</div>
|
|
</div><!-- fragment -->
|
|
<p>Creates a test for whether a non const member function exists. </p>
|
|
<p>This creates a class derived from std::integral_constant that will be true if the type has the proper member function for the given archive.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">name</td><td>The name of the function to test for (e.g. serialize, load, save) </td></tr>
|
|
<tr><td class="paramname">test_name</td><td>The name to give the test for the function being tested for (e.g. serialize, versioned_serialize) </td></tr>
|
|
<tr><td class="paramname">versioned</td><td>Either blank or the macro CEREAL_MAKE_VERSIONED_TEST </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a65a75d150c050c8a44ab1d9d2b85bba6"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a65a75d150c050c8a44ab1d9d2b85bba6">◆ </a></span>CEREAL_MAKE_HAS_NON_MEMBER_LOAD_AND_CONSTRUCT_TEST</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_HAS_NON_MEMBER_LOAD_AND_CONSTRUCT_TEST</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">test_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">versioned </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">namespace </span>detail \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class T, class A> \</div>
|
|
<div class="line"> struct has_non_member_##test_name##_impl \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class TT, class AA> \</div>
|
|
<div class="line"> static <span class="keyword">auto</span> test(<span class="keywordtype">int</span>) -> decltype( LoadAndConstruct<TT>::load_and_construct( \</div>
|
|
<div class="line"> std::declval<AA&>(), std::declval< ::<a class="code" href="classcereal_1_1construct.html">cereal::construct<TT></a>&>() versioned ), yes()); \</div>
|
|
<div class="line"> template <class, class> \</div>
|
|
<div class="line"> static no test( ... ); \</div>
|
|
<div class="line"> static <span class="keyword">const</span> <span class="keywordtype">bool</span> value = std::is_same<decltype( test<T, A>( 0 ) ), yes>::value; \</div>
|
|
<div class="line"> }; \</div>
|
|
<div class="line"> } <span class="comment">/* end namespace detail */</span> \</div>
|
|
<div class="line"> template <class T, class A> \</div>
|
|
<div class="line"> struct has_non_member_##test_name : \</div>
|
|
<div class="line"> std::integral_constant<bool, detail::has_non_member_##test_name##_impl<typename std::remove_const<T>::type, A>::value> {};</div>
|
|
</div><!-- fragment -->
|
|
<p>Creates a test for whether a non-member load_and_construct specialization exists. </p>
|
|
<p>This creates a class derived from std::integral_constant that will be true if the type has the proper non-member function for the given archive. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a99298ef5f4678723f35d175291eb5770"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a99298ef5f4678723f35d175291eb5770">◆ </a></span>CEREAL_MAKE_HAS_NON_MEMBER_LOAD_MINIMAL_TEST</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_HAS_NON_MEMBER_LOAD_MINIMAL_TEST</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">test_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">save_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">versioned </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Creates a test for whether a non-member load_minimal function exists. </p>
|
|
<p>This creates a class derived from std::integral_constant that will be true if the type has the proper member function for the given archive.</p>
|
|
<p>See notes from member load_minimal implementation.</p>
|
|
<p>Note that there should be an additional const check on load_minimal after the valid check, but this currently interferes with many valid uses of minimal serialization. It has been removed (see #565 on github) and previously was:</p>
|
|
<div class="fragment"><div class="line">static_assert( check::const_valid || !check::exists,</div>
|
|
<div class="line"> <span class="stringliteral">"cereal detected an invalid serialization type parameter in non-member "</span> #test_name <span class="stringliteral">". "</span></div>
|
|
<div class="line"> #test_name <span class="stringliteral">" non-member functions must accept their serialization type by non-const reference"</span> );</div>
|
|
</div><!-- fragment --><p>See #132, #436, #263, and #565 on <a href="https://github.com/USCiLab/cereal">https://github.com/USCiLab/cereal</a> for more details.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">test_name</td><td>The name to give the test (e.g. load_minimal or versioned_load_minimal) </td></tr>
|
|
<tr><td class="paramname">save_name</td><td>The corresponding name the save test would have (e.g. save_minimal or versioned_save_minimal) </td></tr>
|
|
<tr><td class="paramname">versioned</td><td>Either blank or the macro CEREAL_MAKE_VERSIONED_TEST </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ae7eb2173790b30144a419f33afcd2710"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ae7eb2173790b30144a419f33afcd2710">◆ </a></span>CEREAL_MAKE_HAS_NON_MEMBER_SAVE_MINIMAL_TEST</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_HAS_NON_MEMBER_SAVE_MINIMAL_TEST</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">test_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">versioned </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Creates a test for whether a non-member save_minimal function exists. </p>
|
|
<p>This creates a class derived from std::integral_constant that will be true if the type has the proper member function for the given archive.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">test_name</td><td>The name to give the test (e.g. save_minimal or versioned_save_minimal) </td></tr>
|
|
<tr><td class="paramname">versioned</td><td>Either blank or the macro CEREAL_MAKE_VERSIONED_TEST </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a5be76cc82813adfc110f793e37636fb1"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a5be76cc82813adfc110f793e37636fb1">◆ </a></span>CEREAL_MAKE_HAS_NON_MEMBER_SAVE_TEST</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_HAS_NON_MEMBER_SAVE_TEST</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">test_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">versioned </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">namespace </span>detail \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class T, class A> \</div>
|
|
<div class="line"> struct has_non_member_##test_name##_impl \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class TT, class AA> \</div>
|
|
<div class="line"> static <span class="keyword">auto</span> test(<span class="keywordtype">int</span>) -> decltype( <a class="code" href="macros_8hpp.html#a85b7884671ac5a804b66ec7c34d0ca71">CEREAL_SAVE_FUNCTION_NAME</a>( \</div>
|
|
<div class="line"> std::declval<AA&>(), \</div>
|
|
<div class="line"> std::declval<TT const &>() versioned ), yes()); \</div>
|
|
<div class="line"> template <class, class> <span class="keyword">static</span> no test(...); \</div>
|
|
<div class="line"> static <span class="keyword">const</span> <span class="keywordtype">bool</span> value = std::is_same<decltype(test<T, A>(0)), yes>::value; \</div>
|
|
<div class="line"> \</div>
|
|
<div class="line"> template <class TT, class AA> \</div>
|
|
<div class="line"> static <span class="keyword">auto</span> test2(<span class="keywordtype">int</span>) -> decltype( <a class="code" href="macros_8hpp.html#a85b7884671ac5a804b66ec7c34d0ca71">CEREAL_SAVE_FUNCTION_NAME</a>( \</div>
|
|
<div class="line"> std::declval<AA &>(), \</div>
|
|
<div class="line"> std::declval<<span class="keyword">typename</span> std::remove_const<TT>::type&>() versioned ), yes()); \</div>
|
|
<div class="line"> template <class, class> <span class="keyword">static</span> no test2(...); \</div>
|
|
<div class="line"> static <span class="keyword">const</span> <span class="keywordtype">bool</span> not_const_type = std::is_same<decltype(test2<T, A>(0)), yes>::value; \</div>
|
|
<div class="line"> }; \</div>
|
|
<div class="line"> } <span class="comment">/* end namespace detail */</span> \</div>
|
|
<div class="line"> \</div>
|
|
<div class="line"> template <class T, class A> \</div>
|
|
<div class="line"> struct has_non_member_##test_name : std::integral_constant<bool, detail::has_non_member_##test_name##_impl<T, A>::value> \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> using check = <span class="keyword">typename</span> detail::has_non_member_##test_name##_impl<T, A>; \</div>
|
|
<div class="line"> static_assert( check::value || !check::not_const_type, \</div>
|
|
<div class="line"> <span class="stringliteral">"cereal detected a non-const type parameter in non-member "</span> #test_name <span class="stringliteral">". \n "</span> \</div>
|
|
<div class="line"> #test_name <span class="stringliteral">" non-member functions must always pass their types as const"</span> ); \</div>
|
|
<div class="line"> };</div>
|
|
</div><!-- fragment -->
|
|
<p>Creates a test for whether a non-member save function exists. </p>
|
|
<p>This creates a class derived from std::integral_constant that will be true if the type has the proper non-member function for the given archive.</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">test_name</td><td>The name to give the test (e.g. save or versioned_save) </td></tr>
|
|
<tr><td class="paramname">versioned</td><td>Either blank or the macro CEREAL_MAKE_VERSIONED_TEST </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="af31f4783772a7f6a3048a793090715cf"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#af31f4783772a7f6a3048a793090715cf">◆ </a></span>CEREAL_MAKE_HAS_NON_MEMBER_TEST</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_HAS_NON_MEMBER_TEST</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">test_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">func, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">versioned </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">namespace </span>detail \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class T, class A> \</div>
|
|
<div class="line"> struct has_non_member_##test_name##_impl \</div>
|
|
<div class="line"> { \</div>
|
|
<div class="line"> template <class TT, class AA> \</div>
|
|
<div class="line"> static <span class="keyword">auto</span> test(<span class="keywordtype">int</span>) -> decltype( func( std::declval<AA&>(), std::declval<TT&>() versioned ), yes()); \</div>
|
|
<div class="line"> template <class, class> \</div>
|
|
<div class="line"> static no test( ... ); \</div>
|
|
<div class="line"> static <span class="keyword">const</span> <span class="keywordtype">bool</span> value = std::is_same<decltype( test<T, A>( 0 ) ), yes>::value; \</div>
|
|
<div class="line"> }; \</div>
|
|
<div class="line"> } <span class="comment">/* end namespace detail */</span> \</div>
|
|
<div class="line"> template <class T, class A> \</div>
|
|
<div class="line"> struct has_non_member_##test_name : std::integral_constant<bool, detail::has_non_member_##test_name##_impl<T, A>::value> {}</div>
|
|
</div><!-- fragment -->
|
|
<p>Creates a test for whether a non const non-member function exists. </p>
|
|
<p>This creates a class derived from std::integral_constant that will be true if the type has the proper non-member function for the given archive. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="af566f627f0de18c31e2bbb21a01cce70"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#af566f627f0de18c31e2bbb21a01cce70">◆ </a></span>CEREAL_MAKE_IS_SPECIALIZED</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_IS_SPECIALIZED</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">versioned_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">spec_name </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> A> \</div>
|
|
<div class="line"> struct is_specialized_##name : std::integral_constant<bool, \</div>
|
|
<div class="line"> is_specialized<T, A>::value && detail::is_specialized_##spec_name<T, A>::value> \</div>
|
|
<div class="line"> { <a class="code" href="traits_8hpp.html#a7e6519141d71272bbe5db25d01d175ad">CEREAL_MAKE_IS_SPECIALIZED_ASSERT</a>(name, versioned_name, name, spec_name); }; \</div>
|
|
<div class="line"> template <class T, class A> \</div>
|
|
<div class="line"> struct is_specialized_##versioned_name : std::integral_constant<bool, \</div>
|
|
<div class="line"> is_specialized<T, A>::value && detail::is_specialized_##spec_name<T, A>::value> \</div>
|
|
<div class="line"> { <a class="code" href="traits_8hpp.html#a7e6519141d71272bbe5db25d01d175ad">CEREAL_MAKE_IS_SPECIALIZED_ASSERT</a>(name, versioned_name, versioned_name, spec_name); }</div>
|
|
</div><!-- fragment -->
|
|
<p>Generates a test for specialization for versioned and unversioned functions. </p>
|
|
<p>This creates checks that can be queried to see if a given type of serialization function has been specialized for this type </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a7e6519141d71272bbe5db25d01d175ad"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a7e6519141d71272bbe5db25d01d175ad">◆ </a></span>CEREAL_MAKE_IS_SPECIALIZED_ASSERT</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_IS_SPECIALIZED_ASSERT</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">versioned_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">print_name, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">spec_name </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> static_assert( (is_specialized<T, A>::value && detail::is_specialized_##spec_name<T, A>::value && \</div>
|
|
<div class="line"> (has_##name<T, A>::value || has_##versioned_name<T, A>::value)) \</div>
|
|
<div class="line"> || !(is_specialized<T, A>::value && detail::is_specialized_##spec_name<T, A>::value), \</div>
|
|
<div class="line"> <span class="stringliteral">"cereal detected "</span> #print_name <span class="stringliteral">" specialization but no "</span> #print_name <span class="stringliteral">" serialize function"</span> )</div>
|
|
</div><!-- fragment -->
|
|
<p>Create the static assertion for some specialization. </p>
|
|
<p>This assertion will fail if the type is indeed specialized and does not have the appropriate type of serialization functions </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a33ec65e257576ae208d6a71cf01c4258"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a33ec65e257576ae208d6a71cf01c4258">◆ </a></span>CEREAL_MAKE_IS_SPECIALIZED_IMPL</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_MAKE_IS_SPECIALIZED_IMPL</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">name</td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">template</span> <<span class="keyword">class</span> T, <span class="keyword">class</span> A> \</div>
|
|
<div class="line"> struct is_specialized_##name : std::integral_constant<bool, \</div>
|
|
<div class="line"> !std::is_base_of<std::false_type, specialize<A, T, specialization::name>>::value> {}</div>
|
|
</div><!-- fragment -->
|
|
<p>Create a test for a cereal::specialization entry. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a039bc7d4a3e8994d3fd7eedf5cae1666"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a039bc7d4a3e8994d3fd7eedf5cae1666">◆ </a></span>CEREAL_SETUP_ARCHIVE_TRAITS</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define CEREAL_SETUP_ARCHIVE_TRAITS</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">InputArchive, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname">OutputArchive </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> <span class="keyword">namespace </span>cereal { <span class="keyword">namespace </span>traits { <span class="keyword">namespace </span>detail { \</div>
|
|
<div class="line"> template <> <span class="keyword">struct </span>get_output_from_input<InputArchive> \</div>
|
|
<div class="line"> { <span class="keyword">using</span> <a class="code" href="bitset_8hpp.html#a4f5825a3267dd05e798bed76cf7e29cc">type</a> = OutputArchive; }; \</div>
|
|
<div class="line"> template <> <span class="keyword">struct </span>get_input_from_output<OutputArchive> \</div>
|
|
<div class="line"> { <span class="keyword">using</span> <a class="code" href="bitset_8hpp.html#a4f5825a3267dd05e798bed76cf7e29cc">type</a> = InputArchive; }; } } } <span class="comment">/* end namespaces */</span></div>
|
|
</div><!-- fragment -->
|
|
<p>Sets up traits that relate an input archive to an output archive. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Typedef Documentation</h2>
|
|
<a id="a07719740a7cec6692b44244201a92603"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a07719740a7cec6692b44244201a92603">◆ </a></span>DisableIf</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<bool ... Conditions> </div>
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">using <a class="el" href="traits_8hpp.html#a07719740a7cec6692b44244201a92603">DisableIf</a> = typename detail::DisableIfHelper<Conditions...>::type</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Provides a way to disable a function if conditions are met. </p>
|
|
<p>This is intended to be used in a near identical fashion to std::enable_if while being significantly easier to read at the cost of not allowing for as complicated of a condition.</p>
|
|
<p>This will compile (allow the function) if every condition evaluates to false. This should be used with SFINAE to ensure that at least one other candidate function works when one fails due to a DisableIf.</p>
|
|
<p>This should be used as the las template parameter to a function as an unnamed parameter with a default value of cereal::traits::sfinae:</p>
|
|
<div class="fragment"><div class="line"><span class="comment">// using by making the last template argument variadic</span></div>
|
|
<div class="line">template <class T, DisableIf<std::is_same<T, bool>::value> = <a class="code" href="traits_8hpp.html#aafd74e5beca7e112de8b2e20ef41d973">sfinae</a>></div>
|
|
<div class="line"><span class="keywordtype">void</span> func(T t );</div>
|
|
</div><!-- fragment --><p>This is often used in conjunction with EnableIf to form an enable/disable pair of overloads.</p>
|
|
<p>Note that this performs a logical AND of all conditions, so you will need to construct more complicated requirements with this fact in mind. If all conditions hold, the function will be disabled.</p>
|
|
<dl class="tparams"><dt>Template Parameters</dt><dd>
|
|
<table class="tparams">
|
|
<tr><td class="paramname">Conditions</td><td>The conditions which will be logically ANDed to disable the function. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a42e5f793ba5a1b3d2fd674d7334b12bd"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a42e5f793ba5a1b3d2fd674d7334b12bd">◆ </a></span>EnableIf</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<bool ... Conditions> </div>
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">using <a class="el" href="traits_8hpp.html#a42e5f793ba5a1b3d2fd674d7334b12bd">EnableIf</a> = typename detail::EnableIfHelper<Conditions...>::type</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Provides a way to enable a function if conditions are met. </p>
|
|
<p>This is intended to be used in a near identical fashion to std::enable_if while being significantly easier to read at the cost of not allowing for as complicated of a condition.</p>
|
|
<p>This will compile (allow the function) if every condition evaluates to true. at compile time. This should be used with SFINAE to ensure that at least one other candidate function works when one fails due to an EnableIf.</p>
|
|
<p>This should be used as the las template parameter to a function as an unnamed parameter with a default value of cereal::traits::sfinae:</p>
|
|
<div class="fragment"><div class="line"><span class="comment">// using by making the last template argument variadic</span></div>
|
|
<div class="line">template <class T, EnableIf<std::is_same<T, bool>::value> = <a class="code" href="traits_8hpp.html#aafd74e5beca7e112de8b2e20ef41d973">sfinae</a>></div>
|
|
<div class="line"><span class="keywordtype">void</span> func(T t );</div>
|
|
</div><!-- fragment --><p>Note that this performs a logical AND of all conditions, so you will need to construct more complicated requirements with this fact in mind.</p>
|
|
<dl class="tparams"><dt>Template Parameters</dt><dd>
|
|
<table class="tparams">
|
|
<tr><td class="paramname">Conditions</td><td>The conditions which will be logically ANDed to enable the function. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
<div class="ttc" id="aclasscereal_1_1construct_html"><div class="ttname"><a href="classcereal_1_1construct.html">cereal::construct</a></div><div class="ttdoc">Used to construct types with no default constructor.</div><div class="ttdef"><b>Definition:</b> access.hpp:164</div></div>
|
|
<div class="ttc" id="atraits_8hpp_html_a29490687675183194498a843f7beeb8b"><div class="ttname"><a href="traits_8hpp.html#a29490687675183194498a843f7beeb8b">CEREAL_ARCHIVE_RESTRICT</a></div><div class="ttdeci">#define CEREAL_ARCHIVE_RESTRICT(INTYPE, OUTTYPE)</div><div class="ttdoc">A macro to use to restrict which types of archives your function will work for.</div><div class="ttdef"><b>Definition:</b> traits.hpp:1315</div></div>
|
|
<div class="ttc" id="abitset_8hpp_html_a4f5825a3267dd05e798bed76cf7e29cc"><div class="ttname"><a href="bitset_8hpp.html#a4f5825a3267dd05e798bed76cf7e29cc">cereal::bitset_detail::type</a></div><div class="ttdeci">type</div><div class="ttdoc">The type the bitset is encoded with.</div><div class="ttdef"><b>Definition:</b> bitset.hpp:43</div></div>
|
|
<div class="ttc" id="amacros_8hpp_html_a85b7884671ac5a804b66ec7c34d0ca71"><div class="ttname"><a href="macros_8hpp.html#a85b7884671ac5a804b66ec7c34d0ca71">CEREAL_SAVE_FUNCTION_NAME</a></div><div class="ttdeci">#define CEREAL_SAVE_FUNCTION_NAME</div><div class="ttdoc">The serialization (save) function name to search for.</div><div class="ttdef"><b>Definition:</b> macros.hpp:92</div></div>
|
|
<div class="ttc" id="afunctional_8hpp_html_a02f9cfc9a4055c8a49eb050b02cd3357"><div class="ttname"><a href="functional_8hpp.html#a02f9cfc9a4055c8a49eb050b02cd3357">cereal::serialize</a></div><div class="ttdeci">void serialize(Archive &, std::less< T > &)</div><div class="ttdoc">Saving for std::less.</div><div class="ttdef"><b>Definition:</b> functional.hpp:39</div></div>
|
|
<div class="ttc" id="atraits_8hpp_html_a7e6519141d71272bbe5db25d01d175ad"><div class="ttname"><a href="traits_8hpp.html#a7e6519141d71272bbe5db25d01d175ad">CEREAL_MAKE_IS_SPECIALIZED_ASSERT</a></div><div class="ttdeci">#define CEREAL_MAKE_IS_SPECIALIZED_ASSERT(name, versioned_name, print_name, spec_name)</div><div class="ttdoc">Create the static assertion for some specialization.</div><div class="ttdef"><b>Definition:</b> traits.hpp:1028</div></div>
|
|
<div class="ttc" id="atraits_8hpp_html_aafd74e5beca7e112de8b2e20ef41d973"><div class="ttname"><a href="traits_8hpp.html#aafd74e5beca7e112de8b2e20ef41d973">cereal::traits::detail::sfinae</a></div><div class="ttdeci">sfinae</div><div class="ttdoc">Return type for SFINAE Enablers.</div><div class="ttdef"><b>Definition:</b> traits.hpp:66</div></div>
|
|
<!-- HTML footer for doxygen 1.8.3.1-->
|
|
<!-- start footer part -->
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated on Sun Feb 27 2022 19:46:46 for cereal by  <a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
</a> 1.8.17
|
|
</small></address>
|
|
<script>
|
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
|
ga('create', 'UA-42360142-1', 'uscilab.github.io');
|
|
ga('send', 'pageview');
|
|
</script>
|
|
</body>
|
|
</html>
|