Files
entt/classentt_1_1basic__poly.html
2025-03-19 15:49:42 +01:00

712 lines
40 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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>EnTT: entt::basic_poly&lt; Concept, Len, Align &gt; Class Template 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>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.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-awesome.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 id="projectrow">
<td id="projectalign">
<div id="projectname">EnTT<span id="projectnumber">&#160;3.15.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search',false);
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){ initResizable(false); });
/* @license-end */
</script>
<!-- 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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceentt.html">entt</a></li><li class="navelem"><a class="el" href="classentt_1_1basic__poly.html">basic_poly</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classentt_1_1basic__poly-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">entt::basic_poly&lt; Concept, Len, Align &gt; Class Template Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Static polymorphism made simple and within everyone's reach.
<a href="#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="poly_8hpp_source.html">poly.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for entt::basic_poly&lt; Concept, Len, Align &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="classentt_1_1basic__poly__inherit__graph.png" border="0" usemap="#aentt_1_1basic__poly_3_01Concept_00_01Len_00_01Align_01_4_inherit__map" alt="Inheritance graph"/></div>
<map name="aentt_1_1basic__poly_3_01Concept_00_01Len_00_01Align_01_4_inherit__map" id="aentt_1_1basic__poly_3_01Concept_00_01Len_00_01Align_01_4_inherit__map">
<area shape="rect" title="Static polymorphism made simple and within everyone&#39;s reach." alt="" coords="8,108,187,148"/>
<area shape="rect" title=" " alt="" coords="5,5,189,60"/>
<area shape="poly" title=" " alt="" coords="100,74,100,108,95,108,95,74"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for entt::basic_poly&lt; Concept, Len, Align &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="classentt_1_1basic__poly__coll__graph.png" border="0" usemap="#aentt_1_1basic__poly_3_01Concept_00_01Len_00_01Align_01_4_coll__map" alt="Collaboration graph"/></div>
<map name="aentt_1_1basic__poly_3_01Concept_00_01Len_00_01Align_01_4_coll__map" id="aentt_1_1basic__poly_3_01Concept_00_01Len_00_01Align_01_4_coll__map">
<area shape="rect" title="Static polymorphism made simple and within everyone&#39;s reach." alt="" coords="8,108,187,148"/>
<area shape="rect" title=" " alt="" coords="5,5,189,60"/>
<area shape="poly" title=" " alt="" coords="100,74,100,108,95,108,95,74"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a71786016b64718d72167ff763f4793cf" id="r_a71786016b64718d72167ff763f4793cf"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a71786016b64718d72167ff763f4793cf">concept_type</a> = typename Concept::template <a class="el" href="#a0341f0451d35dbe7a70634e4cf5037db">type</a>&lt;<a class="el" href="structentt_1_1poly__base.html">poly_base</a>&lt;<a class="el" href="classentt_1_1basic__poly.html">basic_poly</a>&gt;&gt;</td></tr>
<tr class="memdesc:a71786016b64718d72167ff763f4793cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Concept type. <br /></td></tr>
<tr class="separator:a71786016b64718d72167ff763f4793cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf0092d4a0a8976a742ff76a68851054" id="r_abf0092d4a0a8976a742ff76a68851054"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abf0092d4a0a8976a742ff76a68851054">vtable_type</a> = typename <a class="el" href="classentt_1_1poly__vtable.html">poly_vtable</a>&lt;Concept, Len, Align&gt;<a class="el" href="#a0341f0451d35dbe7a70634e4cf5037db">::type</a></td></tr>
<tr class="memdesc:abf0092d4a0a8976a742ff76a68851054"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual table type. <br /></td></tr>
<tr class="separator:abf0092d4a0a8976a742ff76a68851054"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:af1ee3622b7b01d9934dd903f54846e44" id="r_af1ee3622b7b01d9934dd903f54846e44"><td class="memItemLeft" align="right" valign="top"><a id="af1ee3622b7b01d9934dd903f54846e44" name="af1ee3622b7b01d9934dd903f54846e44"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>basic_poly</b> () noexcept=default</td></tr>
<tr class="memdesc:af1ee3622b7b01d9934dd903f54846e44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:af1ee3622b7b01d9934dd903f54846e44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed074839fc14e757f761d89606895062" id="r_aed074839fc14e757f761d89606895062"><td class="memTemplParams" colspan="2">template&lt;typename Type, typename... Args&gt; </td></tr>
<tr class="memitem:aed074839fc14e757f761d89606895062"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#aed074839fc14e757f761d89606895062">basic_poly</a> (std::in_place_type_t&lt; Type &gt;, Args &amp;&amp;...args)</td></tr>
<tr class="memdesc:aed074839fc14e757f761d89606895062"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a poly by directly initializing the new object. <br /></td></tr>
<tr class="separator:aed074839fc14e757f761d89606895062"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa587d96479005de4cd19047a7c76cf94" id="r_aa587d96479005de4cd19047a7c76cf94"><td class="memTemplParams" colspan="2">template&lt;typename Type, typename = std::enable_if_t&lt;!std::is_same_v&lt;std::remove_cv_t&lt;std::remove_reference_t&lt;Type&gt;&gt;, basic_poly&gt;&gt;&gt; </td></tr>
<tr class="memitem:aa587d96479005de4cd19047a7c76cf94"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#aa587d96479005de4cd19047a7c76cf94">basic_poly</a> (Type &amp;&amp;value) noexcept</td></tr>
<tr class="memdesc:aa587d96479005de4cd19047a7c76cf94"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a poly from a given value. <br /></td></tr>
<tr class="separator:aa587d96479005de4cd19047a7c76cf94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0341f0451d35dbe7a70634e4cf5037db" id="r_a0341f0451d35dbe7a70634e4cf5037db"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structentt_1_1type__info.html">type_info</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0341f0451d35dbe7a70634e4cf5037db">type</a> () const noexcept</td></tr>
<tr class="memdesc:a0341f0451d35dbe7a70634e4cf5037db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the object type if any, <code>type_id&lt;void&gt;()</code> otherwise. <br /></td></tr>
<tr class="separator:a0341f0451d35dbe7a70634e4cf5037db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee4305d651f7b2f5248eba2cbfea4f17" id="r_aee4305d651f7b2f5248eba2cbfea4f17"><td class="memItemLeft" align="right" valign="top">const void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aee4305d651f7b2f5248eba2cbfea4f17">data</a> () const noexcept</td></tr>
<tr class="memdesc:aee4305d651f7b2f5248eba2cbfea4f17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an opaque pointer to the contained instance. <br /></td></tr>
<tr class="separator:aee4305d651f7b2f5248eba2cbfea4f17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37aafd6c5ebf21b0eb66c3934abcbc06" id="r_a37aafd6c5ebf21b0eb66c3934abcbc06"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a37aafd6c5ebf21b0eb66c3934abcbc06">data</a> () noexcept</td></tr>
<tr class="memdesc:a37aafd6c5ebf21b0eb66c3934abcbc06"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an opaque pointer to the contained instance. <br /></td></tr>
<tr class="separator:a37aafd6c5ebf21b0eb66c3934abcbc06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6aaa4ef03f6f2a599abcf633412d6a8d" id="r_a6aaa4ef03f6f2a599abcf633412d6a8d"><td class="memTemplParams" colspan="2">template&lt;typename Type, typename... Args&gt; </td></tr>
<tr class="memitem:a6aaa4ef03f6f2a599abcf633412d6a8d"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="#a6aaa4ef03f6f2a599abcf633412d6a8d">emplace</a> (Args &amp;&amp;...args)</td></tr>
<tr class="memdesc:a6aaa4ef03f6f2a599abcf633412d6a8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Replaces the contained object by creating a new instance directly. <br /></td></tr>
<tr class="separator:a6aaa4ef03f6f2a599abcf633412d6a8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43ab35169a0fdb31f7f5db5e5ad0e17d" id="r_a43ab35169a0fdb31f7f5db5e5ad0e17d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a43ab35169a0fdb31f7f5db5e5ad0e17d">reset</a> ()</td></tr>
<tr class="memdesc:a43ab35169a0fdb31f7f5db5e5ad0e17d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys contained object. <br /></td></tr>
<tr class="separator:a43ab35169a0fdb31f7f5db5e5ad0e17d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bd854e20fcb28a1c8bd9e616cce21a7" id="r_a9bd854e20fcb28a1c8bd9e616cce21a7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9bd854e20fcb28a1c8bd9e616cce21a7">operator bool</a> () const noexcept</td></tr>
<tr class="memdesc:a9bd854e20fcb28a1c8bd9e616cce21a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns false if a poly is empty, true otherwise. <br /></td></tr>
<tr class="separator:a9bd854e20fcb28a1c8bd9e616cce21a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a490333415cfcb0c59b12a11f8ccd36c7" id="r_a490333415cfcb0c59b12a11f8ccd36c7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="#a71786016b64718d72167ff763f4793cf">concept_type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a490333415cfcb0c59b12a11f8ccd36c7">operator-&gt;</a> () noexcept</td></tr>
<tr class="memdesc:a490333415cfcb0c59b12a11f8ccd36c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a pointer to the underlying concept. <br /></td></tr>
<tr class="separator:a490333415cfcb0c59b12a11f8ccd36c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4453091b5b53c536ae2f6a1b1fce189" id="r_aa4453091b5b53c536ae2f6a1b1fce189"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="#a71786016b64718d72167ff763f4793cf">concept_type</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa4453091b5b53c536ae2f6a1b1fce189">operator-&gt;</a> () const noexcept</td></tr>
<tr class="memdesc:aa4453091b5b53c536ae2f6a1b1fce189"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a pointer to the underlying concept. <br /></td></tr>
<tr class="separator:aa4453091b5b53c536ae2f6a1b1fce189"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a327c0a52b8eff8be5746bd0215d6a6d0" id="r_a327c0a52b8eff8be5746bd0215d6a6d0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__poly.html">basic_poly</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a327c0a52b8eff8be5746bd0215d6a6d0">as_ref</a> () noexcept</td></tr>
<tr class="memdesc:a327c0a52b8eff8be5746bd0215d6a6d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Aliasing constructor. <br /></td></tr>
<tr class="separator:a327c0a52b8eff8be5746bd0215d6a6d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8293af6e4643b9917aee7962016f5470" id="r_a8293af6e4643b9917aee7962016f5470"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classentt_1_1basic__poly.html">basic_poly</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8293af6e4643b9917aee7962016f5470">as_ref</a> () const noexcept</td></tr>
<tr class="memdesc:a8293af6e4643b9917aee7962016f5470"><td class="mdescLeft">&#160;</td><td class="mdescRight">Aliasing constructor. <br /></td></tr>
<tr class="separator:a8293af6e4643b9917aee7962016f5470"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="friends" name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a4f532417307014ab3c9eb0070beaf7fc" id="r_a4f532417307014ab3c9eb0070beaf7fc"><td class="memItemLeft" align="right" valign="top">struct&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4f532417307014ab3c9eb0070beaf7fc">poly_base&lt; basic_poly &gt;</a></td></tr>
<tr class="separator:a4f532417307014ab3c9eb0070beaf7fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;typename Concept, std::size_t Len, std::size_t Align&gt;<br />
class entt::basic_poly&lt; Concept, Len, Align &gt;</div><p>Static polymorphism made simple and within everyone's reach. </p>
<p>Static polymorphism is a very powerful tool in C++, albeit sometimes cumbersome to obtain.<br />
This class aims to make it simple and easy to use.</p>
<dl class="section note"><dt>Note</dt><dd>Both deduced and defined static virtual tables are supported.<br />
Moreover, the <code>poly</code> class template also works with unmanaged objects.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Concept</td><td>Concept descriptor. </td></tr>
<tr><td class="paramname">Len</td><td>Size of the storage reserved for the small buffer optimization. </td></tr>
<tr><td class="paramname">Align</td><td>Optional alignment requirement. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00193">193</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a71786016b64718d72167ff763f4793cf" name="a71786016b64718d72167ff763f4793cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71786016b64718d72167ff763f4793cf">&#9670;&#160;</a></span>concept_type</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Concept, std::size_t Len, std::size_t Align&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classentt_1_1basic__poly.html">entt::basic_poly</a>&lt; Concept, Len, Align &gt;::concept_type = typename Concept::template <a class="el" href="#a0341f0451d35dbe7a70634e4cf5037db">type</a>&lt;<a class="el" href="structentt_1_1poly__base.html">poly_base</a>&lt;<a class="el" href="classentt_1_1basic__poly.html">basic_poly</a>&gt;&gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p>Concept type. </p>
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00198">198</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div>
</div>
<a id="abf0092d4a0a8976a742ff76a68851054" name="abf0092d4a0a8976a742ff76a68851054"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf0092d4a0a8976a742ff76a68851054">&#9670;&#160;</a></span>vtable_type</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Concept, std::size_t Len, std::size_t Align&gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="classentt_1_1basic__poly.html">entt::basic_poly</a>&lt; Concept, Len, Align &gt;::vtable_type = typename <a class="el" href="classentt_1_1poly__vtable.html">poly_vtable</a>&lt;Concept, Len, Align&gt;<a class="el" href="#a0341f0451d35dbe7a70634e4cf5037db">::type</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Virtual table type. </p>
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00200">200</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aed074839fc14e757f761d89606895062" name="aed074839fc14e757f761d89606895062"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed074839fc14e757f761d89606895062">&#9670;&#160;</a></span>basic_poly() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Concept, std::size_t Len, std::size_t Align&gt; </div>
<div class="memtemplate">
template&lt;typename Type, typename... Args&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__poly.html">entt::basic_poly</a>&lt; Concept, Len, Align &gt;::basic_poly </td>
<td>(</td>
<td class="paramtype">std::in_place_type_t&lt; Type &gt;</td> <td class="paramname"><span class="paramname"><em></em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Args &amp;&amp;...</td> <td class="paramname"><span class="paramname"><em>args</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel explicit">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructs a poly by directly initializing the new object. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Type</td><td>Type of object to use to initialize the poly. </td></tr>
<tr><td class="paramname">Args</td><td>Types of arguments to use to construct the new instance. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">args</td><td>Parameters to use to construct the instance. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00212">212</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div>
</div>
<a id="aa587d96479005de4cd19047a7c76cf94" name="aa587d96479005de4cd19047a7c76cf94"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa587d96479005de4cd19047a7c76cf94">&#9670;&#160;</a></span>basic_poly() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Concept, std::size_t Len, std::size_t Align&gt; </div>
<div class="memtemplate">
template&lt;typename Type, typename = std::enable_if_t&lt;!std::is_same_v&lt;std::remove_cv_t&lt;std::remove_reference_t&lt;Type&gt;&gt;, basic_poly&gt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__poly.html">entt::basic_poly</a>&lt; Concept, Len, Align &gt;::basic_poly </td>
<td>(</td>
<td class="paramtype">Type &amp;&amp;</td> <td class="paramname"><span class="paramname"><em>value</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructs a poly from a given value. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Type</td><td>Type of object to use to initialize the poly. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>An instance of an object to use to initialize the poly. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00222">222</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a8293af6e4643b9917aee7962016f5470" name="a8293af6e4643b9917aee7962016f5470"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8293af6e4643b9917aee7962016f5470">&#9670;&#160;</a></span>as_ref() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Concept, std::size_t Len, std::size_t Align&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__poly.html">basic_poly</a> <a class="el" href="classentt_1_1basic__poly.html">entt::basic_poly</a>&lt; Concept, Len, Align &gt;::as_ref </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel nodiscard">nodiscard</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Aliasing constructor. </p>
<dl class="section return"><dt>Returns</dt><dd>A poly that shares a reference to an unmanaged object. </dd></dl>
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00297">297</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div>
</div>
<a id="a327c0a52b8eff8be5746bd0215d6a6d0" name="a327c0a52b8eff8be5746bd0215d6a6d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a327c0a52b8eff8be5746bd0215d6a6d0">&#9670;&#160;</a></span>as_ref() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Concept, std::size_t Len, std::size_t Align&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__poly.html">basic_poly</a> <a class="el" href="classentt_1_1basic__poly.html">entt::basic_poly</a>&lt; Concept, Len, Align &gt;::as_ref </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel nodiscard">nodiscard</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Aliasing constructor. </p>
<dl class="section return"><dt>Returns</dt><dd>A poly that shares a reference to an unmanaged object. </dd></dl>
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00289">289</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div>
</div>
<a id="aee4305d651f7b2f5248eba2cbfea4f17" name="aee4305d651f7b2f5248eba2cbfea4f17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee4305d651f7b2f5248eba2cbfea4f17">&#9670;&#160;</a></span>data() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Concept, std::size_t Len, std::size_t Align&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const void * <a class="el" href="classentt_1_1basic__poly.html">entt::basic_poly</a>&lt; Concept, Len, Align &gt;::data </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel nodiscard">nodiscard</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns an opaque pointer to the contained instance. </p>
<dl class="section return"><dt>Returns</dt><dd>An opaque pointer the contained instance, if any. </dd></dl>
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00237">237</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div>
</div>
<a id="a37aafd6c5ebf21b0eb66c3934abcbc06" name="a37aafd6c5ebf21b0eb66c3934abcbc06"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37aafd6c5ebf21b0eb66c3934abcbc06">&#9670;&#160;</a></span>data() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Concept, std::size_t Len, std::size_t Align&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void * <a class="el" href="classentt_1_1basic__poly.html">entt::basic_poly</a>&lt; Concept, Len, Align &gt;::data </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel nodiscard">nodiscard</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns an opaque pointer to the contained instance. </p>
<dl class="section return"><dt>Returns</dt><dd>An opaque pointer the contained instance, if any. </dd></dl>
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00242">242</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div>
</div>
<a id="a6aaa4ef03f6f2a599abcf633412d6a8d" name="a6aaa4ef03f6f2a599abcf633412d6a8d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6aaa4ef03f6f2a599abcf633412d6a8d">&#9670;&#160;</a></span>emplace()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Concept, std::size_t Len, std::size_t Align&gt; </div>
<div class="memtemplate">
template&lt;typename Type, typename... Args&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1basic__poly.html">entt::basic_poly</a>&lt; Concept, Len, Align &gt;::emplace </td>
<td>(</td>
<td class="paramtype">Args &amp;&amp;...</td> <td class="paramname"><span class="paramname"><em>args</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Replaces the contained object by creating a new instance directly. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">Type</td><td>Type of object to use to initialize the poly. </td></tr>
<tr><td class="paramname">Args</td><td>Types of arguments to use to construct the new instance. </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">args</td><td>Parameters to use to construct the instance. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00253">253</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div>
</div>
<a id="a9bd854e20fcb28a1c8bd9e616cce21a7" name="a9bd854e20fcb28a1c8bd9e616cce21a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9bd854e20fcb28a1c8bd9e616cce21a7">&#9670;&#160;</a></span>operator bool()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Concept, std::size_t Len, std::size_t Align&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classentt_1_1basic__poly.html">entt::basic_poly</a>&lt; Concept, Len, Align &gt;::operator bool </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel explicit">explicit</span><span class="mlabel nodiscard">nodiscard</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns false if a poly is empty, true otherwise. </p>
<dl class="section return"><dt>Returns</dt><dd>False if the poly is empty, true otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00268">268</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div>
</div>
<a id="aa4453091b5b53c536ae2f6a1b1fce189" name="aa4453091b5b53c536ae2f6a1b1fce189"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4453091b5b53c536ae2f6a1b1fce189">&#9670;&#160;</a></span>operator-&gt;() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Concept, std::size_t Len, std::size_t Align&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="#a71786016b64718d72167ff763f4793cf">concept_type</a> * <a class="el" href="classentt_1_1basic__poly.html">entt::basic_poly</a>&lt; Concept, Len, Align &gt;::operator-&gt; </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel nodiscard">nodiscard</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a pointer to the underlying concept. </p>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the underlying concept. </dd></dl>
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00281">281</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div>
</div>
<a id="a490333415cfcb0c59b12a11f8ccd36c7" name="a490333415cfcb0c59b12a11f8ccd36c7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a490333415cfcb0c59b12a11f8ccd36c7">&#9670;&#160;</a></span>operator-&gt;() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Concept, std::size_t Len, std::size_t Align&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="#a71786016b64718d72167ff763f4793cf">concept_type</a> * <a class="el" href="classentt_1_1basic__poly.html">entt::basic_poly</a>&lt; Concept, Len, Align &gt;::operator-&gt; </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel nodiscard">nodiscard</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a pointer to the underlying concept. </p>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the underlying concept. </dd></dl>
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00276">276</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div>
</div>
<a id="a43ab35169a0fdb31f7f5db5e5ad0e17d" name="a43ab35169a0fdb31f7f5db5e5ad0e17d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43ab35169a0fdb31f7f5db5e5ad0e17d">&#9670;&#160;</a></span>reset()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Concept, std::size_t Len, std::size_t Align&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classentt_1_1basic__poly.html">entt::basic_poly</a>&lt; Concept, Len, Align &gt;::reset </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Destroys contained object. </p>
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00259">259</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div>
</div>
<a id="a0341f0451d35dbe7a70634e4cf5037db" name="a0341f0451d35dbe7a70634e4cf5037db"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0341f0451d35dbe7a70634e4cf5037db">&#9670;&#160;</a></span>type()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Concept, std::size_t Len, std::size_t Align&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="structentt_1_1type__info.html">type_info</a> &amp; <a class="el" href="classentt_1_1basic__poly.html">entt::basic_poly</a>&lt; Concept, Len, Align &gt;::type </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel nodiscard">nodiscard</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the object type if any, <code>type_id&lt;void&gt;()</code> otherwise. </p>
<dl class="section return"><dt>Returns</dt><dd>The object type if any, <code>type_id&lt;void&gt;()</code> otherwise. </dd></dl>
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00229">229</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Friends And Related Symbol Documentation</h2>
<a id="a4f532417307014ab3c9eb0070beaf7fc" name="a4f532417307014ab3c9eb0070beaf7fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f532417307014ab3c9eb0070beaf7fc">&#9670;&#160;</a></span>poly_base&lt; basic_poly &gt;</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Concept, std::size_t Len, std::size_t Align&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">friend struct <a class="el" href="structentt_1_1poly__base.html">poly_base</a>&lt; <a class="el" href="classentt_1_1basic__poly.html">basic_poly</a> &gt;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel friend">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="poly_8hpp_source.html#l00151">151</a> of file <a class="el" href="poly_8hpp_source.html">poly.hpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/entt/poly/<a class="el" href="poly_2fwd_8hpp_source.html">fwd.hpp</a></li>
<li>src/entt/poly/<a class="el" href="poly_8hpp_source.html">poly.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2
</small></address>
</div><!-- doc-content -->
</body>
</html>