Sophie

Sophie

distrib > Mageia > 7 > armv7hl > media > core-release > by-pkgid > d8d30ad953f2dbe7e871721325480315 > files > 227

librttr-devel-0.9.6-1.mga7.armv7hl.rpm

<!-- HTML header for doxygen 1.8.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <!-- For Mobile Devices -->
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
        <meta name="generator" content="Doxygen 1.8.15"/>
        <script type="text/javascript" src="jquery.min.js"></script>
        <title>rttr: Default Arguments</title>
        <!--<link href="tabs.css" rel="stylesheet" type="text/css"/>-->
        <script type="text/javascript" src="dynsections.js"></script>
        <link rel = "shortcut icon" type = "image/x-icon" href = "favicon.ico">
        <link rel = "stylesheet" href = "fonts/ptsans_regular_macroman/stylesheet.css">
        <link rel = "stylesheet" href = "fonts/source_code_pro_regular/stylesheet.css">
        <link href="doxygen.css" rel="stylesheet" type="text/css" />
        <link href="custom-doxygen.css" rel="stylesheet" type="text/css"/>
        <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
        <link rel="stylesheet" href="custom-bootstrap.css">
        <script src="bootstrap/js/bootstrap.min.js"></script>
        <script type="text/javascript" src="doxy-boot.js"></script>
    </head>
    <body>
     <!--
        <nav class="navbar navbar-default" role="navigation">
            <div class="container">
                <div class="navbar-header">
                    <a class="navbar-brand">rttr 0.9.6</a>
                </div>
            </div>
        </nav>
        -->
        <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
            <div class="content" id="content">
                <div class="container">
                    <div class="row">
                        <div class="col-sm-12 panel panel-default" style="padding-bottom: 15px;">
                            <div style="margin-bottom: 15px;">
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<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&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="PageDoc"><div class="header">
  <div class="headertitle">
<div class="title">Default Arguments </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>When you want to register a <a class="el" href="classrttr_1_1method.html">method</a> or a <a class="el" href="classrttr_1_1constructor.html">constructor</a> which contains default arguments, you have to provide them RTTR explicitly. The reason for this is, default arguments are not part of the function signature. Nevertheless, RTTR provides a mechanism to register functions with default arguments.</p>
<p>Please take a look at following example:</p>
<div class="fragment"><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerttr.html">rttr</a>;</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> my_function(<span class="keywordtype">int</span> a, <span class="keywordtype">bool</span> b, <span class="keyword">const</span> std::string&amp; text, <span class="keyword">const</span> <span class="keywordtype">int</span>* ptr);</div><div class="line"></div><div class="line"><a class="code" href="registration_8h.html#ac6326400f16225ee15b52eabcaae8130">RTTR_REGISTRATION</a></div><div class="line">{</div><div class="line">    <a class="code" href="classrttr_1_1registration.html#a5da1c6eb947d700681faa7fec0bf23b7">registration::method</a>(<span class="stringliteral">&quot;my_function&quot;</span>, &amp;my_function)   </div><div class="line">    (</div><div class="line">        <a class="code" href="namespacerttr.html#afdaed4515c436b34b8e24af714a09c64">default_arguments</a>(<span class="keyword">true</span>, std::string(<span class="stringliteral">&quot;default text&quot;</span>), <span class="keyword">nullptr</span>)</div><div class="line">    );</div><div class="line">}</div></div><!-- fragment --><p>The default arguments has to be provided via the function: <a class="el" href="namespacerttr.html#afdaed4515c436b34b8e24af714a09c64">default_arguments()</a>. Place the call in the <code>()</code> operator of the returned <a class="el" href="classrttr_1_1registration_1_1bind.html">bind</a> object.</p>
<p>The function has following synopsis: </p><div class="fragment"><div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span>...TArgs&gt;</div><div class="line">detail::default_args&lt;TArgs...&gt; <a class="code" href="namespacerttr.html#afdaed4515c436b34b8e24af714a09c64">default_arguments</a>(TArgs&amp;&amp;...args)</div></div><!-- fragment --><p> The values will be copied internally and will be provided during invoke of the method or constructor, when the corresponding argument is missing:</p>
<div class="fragment"><div class="line"><span class="keywordtype">int</span> main()</div><div class="line">{</div><div class="line">    <span class="keyword">using namespace </span><a class="code" href="namespacerttr.html">rttr</a>;</div><div class="line">    <a class="code" href="classrttr_1_1method.html">method</a> meth = <a class="code" href="classrttr_1_1type.html#a15fa4ae4fb0619be68c3b83967fefb51">type::get_global_method</a>(<span class="stringliteral">&quot;my_function&quot;</span>);</div><div class="line">    <span class="comment">// the default values: &#39;true&#39;, &#39;std::string(&quot;default text&quot;&#39;), &#39;nullptr&#39; will be forwarded by RTTR automatically</span></div><div class="line">    <a class="code" href="classrttr_1_1variant.html">variant</a> var = meth.<a class="code" href="classrttr_1_1method.html#aea4351075b4cbe6f2f2b6500cf226f20">invoke</a>(<a class="code" href="classrttr_1_1instance.html">instance</a>(), 23);</div><div class="line">    std::cout &lt;&lt; var.<a class="code" href="classrttr_1_1variant.html#aed6e6a2e29b4d1ac51a09b7d9037dd44">is_valid</a>(); <span class="comment">// prints &#39;true&#39;</span></div><div class="line"></div><div class="line">    <span class="comment">// the default value: &#39;nullptr&#39; will be forwarded by RTTR automatically</span></div><div class="line">    var = meth.<a class="code" href="classrttr_1_1method.html#aea4351075b4cbe6f2f2b6500cf226f20">invoke</a>(<a class="code" href="classrttr_1_1instance.html">instance</a>(), 23, <span class="keyword">true</span>, std::string(<span class="stringliteral">&quot;text&quot;</span>));</div><div class="line">    std::cout &lt;&lt; var.<a class="code" href="classrttr_1_1variant.html#aed6e6a2e29b4d1ac51a09b7d9037dd44">is_valid</a>(); <span class="comment">// prints &#39;true&#39;</span></div><div class="line">}</div></div><!-- fragment --><dl class="section remark"><dt>Remarks</dt><dd>The given arguments must match the signature from the starting position to the right most argument.</dd></dl>
<p>The following snippet will <b>not</b> compile and will raise a <em>static_assert</em>: </p><div class="fragment"><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerttr.html">rttr</a>;</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> my_function(<span class="keywordtype">int</span> a, <span class="keywordtype">bool</span> b, <span class="keyword">const</span> std::string&amp; text, <span class="keyword">const</span> <span class="keywordtype">int</span>* ptr);</div><div class="line"></div><div class="line"><a class="code" href="registration_8h.html#ac6326400f16225ee15b52eabcaae8130">RTTR_REGISTRATION</a></div><div class="line">{</div><div class="line">    <a class="code" href="classrttr_1_1registration.html#a5da1c6eb947d700681faa7fec0bf23b7">registration::method</a>(<span class="stringliteral">&quot;my_function&quot;</span>, &amp;my_function)   </div><div class="line">    (</div><div class="line">        <a class="code" href="namespacerttr.html#afdaed4515c436b34b8e24af714a09c64">default_arguments</a>(std::string(<span class="stringliteral">&quot;default text&quot;</span>)) <span class="comment">// default value for &quot;ptr&quot; not given</span></div><div class="line">    );</div><div class="line">}</div></div><!-- fragment --><p>Every <a class="el" href="classrttr_1_1method.html">method</a> and <a class="el" href="classrttr_1_1constructor.html">constructor</a> can have default arguments.</p>
<hr/>
<div type="button" class="btn btn-default doxy-button"><a class="el" href="register_metadata_page.html">previous</a></div><div class="btn btn-default doxy-button"><a class="el" href="parameter_names_page.html">next</a></div> </div></div><!-- PageDoc -->
</div><!-- contents -->
<!-- HTML footer for doxygen 1.8.9.1-->
<!-- start footer part -->
<hr class="footer"/>
<address class="footer">
<small>
Generated on Thu Apr 11 2019 20:05:57 for rttr - 0.9.6 by 
<a href="http://www.doxygen.org/index.html">doxygen</a>.
</small>
</address>
</body>
</html>