Imported Upstream version 2.99.2
[platform/upstream/libsigc++.git] / docs / reference / html / classsigc_1_1limit__reference.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6 <meta name="generator" content="Doxygen 1.8.9.1"/>
7 <title>libsigc++: sigc::limit_reference&lt; T_type, I_derives_trackable &gt; Class Template Reference</title>
8 <link href="tabs.css" rel="stylesheet" type="text/css"/>
9 <script type="text/javascript" src="jquery.js"></script>
10 <script type="text/javascript" src="dynsections.js"></script>
11 <link href="doxygen.css" rel="stylesheet" type="text/css" />
12 <link href="doxygen-extra.css" rel="stylesheet" type="text/css"/>
13 </head>
14 <body>
15 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
16 <div id="titlearea">
17 <table cellspacing="0" cellpadding="0">
18  <tbody>
19  <tr style="height: 56px;">
20   <td style="padding-left: 0.5em;">
21    <div id="projectname">libsigc++
22    &#160;<span id="projectnumber">2.99.2</span>
23    </div>
24   </td>
25  </tr>
26  </tbody>
27 </table>
28 </div>
29 <!-- end header part -->
30 <!-- Generated by Doxygen 1.8.9.1 -->
31   <div id="navrow1" class="tabs">
32     <ul class="tablist">
33       <li><a href="index.html"><span>Main&#160;Page</span></a></li>
34       <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
35       <li><a href="modules.html"><span>Modules</span></a></li>
36       <li><a href="namespaces.html"><span>Namespaces</span></a></li>
37       <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
38     </ul>
39   </div>
40   <div id="navrow2" class="tabs2">
41     <ul class="tablist">
42       <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
43       <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
44       <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
45       <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
46     </ul>
47   </div>
48 <div id="nav-path" class="navpath">
49   <ul>
50 <li class="navelem"><a class="el" href="namespacesigc.html">sigc</a></li><li class="navelem"><a class="el" href="classsigc_1_1limit__reference.html">limit_reference</a></li>  </ul>
51 </div>
52 </div><!-- top -->
53 <div class="header">
54   <div class="summary">
55 <a href="#pub-types">Public Types</a> &#124;
56 <a href="#pub-methods">Public Member Functions</a> &#124;
57 <a href="classsigc_1_1limit__reference-members.html">List of all members</a>  </div>
58   <div class="headertitle">
59 <div class="title">sigc::limit_reference&lt; T_type, I_derives_trackable &gt; Class Template Reference</div>  </div>
60 </div><!--header-->
61 <div class="contents">
62
63 <p>A limit_reference&lt;Foo&gt; object stores a reference (Foo&amp;), but makes sure that, if Foo inherits from <a class="el" href="structsigc_1_1trackable.html" title="Base class for objects with auto-disconnection. ">sigc::trackable</a>, then <a class="el" href="group__sigcfunctors.html#ga64cb7832acc1e58efb5ffe0b4f5e9404" title="This function performs a functor on each of the targets of a functor. ">visit_each&lt;&gt;()</a> will "limit" itself to the <a class="el" href="structsigc_1_1trackable.html" title="Base class for objects with auto-disconnection. ">sigc::trackable</a> reference instead of the derived reference.  
64  <a href="classsigc_1_1limit__reference.html#details">More...</a></p>
65
66 <p><code>#include &lt;sigc++/limit_reference.h&gt;</code></p>
67 <table class="memberdecls">
68 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
69 Public Types</h2></td></tr>
70 <tr class="memitem:a1092df7238eb5703afa2fabfbf3cf3a9"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsigc_1_1limit__reference.html#a1092df7238eb5703afa2fabfbf3cf3a9">reference_type</a> = typename std::remove_volatile_t&lt; T_type &gt;</td></tr>
71 <tr class="separator:a1092df7238eb5703afa2fabfbf3cf3a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
72 </table><table class="memberdecls">
73 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
74 Public Member Functions</h2></td></tr>
75 <tr class="memitem:a113ef5d5b4db29df0d726e149034d244"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsigc_1_1limit__reference.html#a113ef5d5b4db29df0d726e149034d244">limit_reference</a> (<a class="el" href="classsigc_1_1limit__reference.html#a1092df7238eb5703afa2fabfbf3cf3a9">reference_type</a>&amp; _A_target)</td></tr>
76 <tr class="memdesc:a113ef5d5b4db29df0d726e149034d244"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a113ef5d5b4db29df0d726e149034d244">More...</a><br /></td></tr>
77 <tr class="separator:a113ef5d5b4db29df0d726e149034d244"><td class="memSeparator" colspan="2">&#160;</td></tr>
78 <tr class="memitem:a951ae1d15397406945d4a6b67f30936f"><td class="memItemLeft" align="right" valign="top">T_type&amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsigc_1_1limit__reference.html#a951ae1d15397406945d4a6b67f30936f">invoke</a> () const </td></tr>
79 <tr class="memdesc:a951ae1d15397406945d4a6b67f30936f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the reference.  <a href="#a951ae1d15397406945d4a6b67f30936f">More...</a><br /></td></tr>
80 <tr class="separator:a951ae1d15397406945d4a6b67f30936f"><td class="memSeparator" colspan="2">&#160;</td></tr>
81 <tr class="memitem:a35d9d66be606486266e53ff416ec0847"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classsigc_1_1limit__reference.html#a1092df7238eb5703afa2fabfbf3cf3a9">reference_type</a>&amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsigc_1_1limit__reference.html#a35d9d66be606486266e53ff416ec0847">visit</a> () const </td></tr>
82 <tr class="memdesc:a35d9d66be606486266e53ff416ec0847"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the entity to visit for <a class="el" href="group__sigcfunctors.html#ga64cb7832acc1e58efb5ffe0b4f5e9404" title="This function performs a functor on each of the targets of a functor. ">visit_each()</a>.  <a href="#a35d9d66be606486266e53ff416ec0847">More...</a><br /></td></tr>
83 <tr class="separator:a35d9d66be606486266e53ff416ec0847"><td class="memSeparator" colspan="2">&#160;</td></tr>
84 </table>
85 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
86 <div class="textblock"><h3>template&lt;class T_type, bool I_derives_trackable = std::is_base_of&lt;trackable, std::decay_t&lt;T_type&gt;&gt;::value&gt;<br />
87 class sigc::limit_reference&lt; T_type, I_derives_trackable &gt;</h3>
88
89 <p>A limit_reference&lt;Foo&gt; object stores a reference (Foo&amp;), but makes sure that, if Foo inherits from <a class="el" href="structsigc_1_1trackable.html" title="Base class for objects with auto-disconnection. ">sigc::trackable</a>, then <a class="el" href="group__sigcfunctors.html#ga64cb7832acc1e58efb5ffe0b4f5e9404" title="This function performs a functor on each of the targets of a functor. ">visit_each&lt;&gt;()</a> will "limit" itself to the <a class="el" href="structsigc_1_1trackable.html" title="Base class for objects with auto-disconnection. ">sigc::trackable</a> reference instead of the derived reference. </p>
90 <p>This avoids use of a reference to the derived type when the derived destructor has run. That can be a problem when using virtual inheritance.</p>
91 <p>If Foo inherits from trackable then both the derived reference and the <a class="el" href="structsigc_1_1trackable.html" title="Base class for objects with auto-disconnection. ">sigc::trackable</a> reference are stored, so we can later retrieve the <a class="el" href="structsigc_1_1trackable.html" title="Base class for objects with auto-disconnection. ">sigc::trackable</a> reference without doing an implicit conversion. To retrieve the derived reference (so that you invoke methods or members of it), use <a class="el" href="classsigc_1_1limit__reference.html#a951ae1d15397406945d4a6b67f30936f" title="Retrieve the reference. ">invoke()</a>. To retrieve the trackable reference (so that you can call <a class="el" href="group__sigcfunctors.html#ga64cb7832acc1e58efb5ffe0b4f5e9404" title="This function performs a functor on each of the targets of a functor. ">visit_each()</a> on it), you use <a class="el" href="classsigc_1_1limit__reference.html#a35d9d66be606486266e53ff416ec0847" title="Retrieve the entity to visit for visit_each(). ">visit()</a>.</p>
92 <p>If Foo does not inherit from <a class="el" href="structsigc_1_1trackable.html" title="Base class for objects with auto-disconnection. ">sigc::trackable</a> then <a class="el" href="classsigc_1_1limit__reference.html#a951ae1d15397406945d4a6b67f30936f" title="Retrieve the reference. ">invoke()</a> and <a class="el" href="classsigc_1_1limit__reference.html#a35d9d66be606486266e53ff416ec0847" title="Retrieve the entity to visit for visit_each(). ">visit()</a> just return the derived reference.</p>
93 <p>This is used for bound (<a class="el" href="group__bind.html#ga9ce84730439c5e1c688bc18c102e81ca" title="Creates an adaptor of type sigc::bind_functor which binds the passed argument to the passed functor...">sigc::bind</a>) slot parameters (via <a class="el" href="classsigc_1_1bound__argument.html" title="A bound_argument<Foo> object stores a bound (for instance, with sigc::bind(), or sigc::bind_return())...">bound_argument</a>), bound return values, and, with <a class="el" href="group__mem__fun.html#ga6ed5c519845b36eb7c6461ebd2a073c9" title="Creates a functor of type sigc::mem_functor which wraps a method. ">mem_fun()</a>, the reference to the handling object.</p>
94 <ul>
95 <li><em>T_type</em> The type of the reference. </li>
96 </ul>
97 </div><h2 class="groupheader">Member Typedef Documentation</h2>
98 <a class="anchor" id="a1092df7238eb5703afa2fabfbf3cf3a9"></a>
99 <div class="memitem">
100 <div class="memproto">
101 <div class="memtemplate">
102 template &lt;class T_type, bool I_derives_trackable = std::is_base_of&lt;trackable, std::decay_t&lt;T_type&gt;&gt;::value&gt; </div>
103       <table class="memname">
104         <tr>
105           <td class="memname">using <a class="el" href="classsigc_1_1limit__reference.html">sigc::limit_reference</a>&lt; T_type, I_derives_trackable &gt;::<a class="el" href="classsigc_1_1limit__reference.html#a1092df7238eb5703afa2fabfbf3cf3a9">reference_type</a> =  typename std::remove_volatile_t&lt;T_type&gt;</td>
106         </tr>
107       </table>
108 </div><div class="memdoc">
109
110 </div>
111 </div>
112 <h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
113 <a class="anchor" id="a113ef5d5b4db29df0d726e149034d244"></a>
114 <div class="memitem">
115 <div class="memproto">
116 <div class="memtemplate">
117 template &lt;class T_type, bool I_derives_trackable = std::is_base_of&lt;trackable, std::decay_t&lt;T_type&gt;&gt;::value&gt; </div>
118 <table class="mlabels">
119   <tr>
120   <td class="mlabels-left">
121       <table class="memname">
122         <tr>
123           <td class="memname"><a class="el" href="classsigc_1_1limit__reference.html">sigc::limit_reference</a>&lt; T_type, I_derives_trackable &gt;::<a class="el" href="classsigc_1_1limit__reference.html">limit_reference</a> </td>
124           <td>(</td>
125           <td class="paramtype"><a class="el" href="classsigc_1_1limit__reference.html#a1092df7238eb5703afa2fabfbf3cf3a9">reference_type</a>&amp;&#160;</td>
126           <td class="paramname"><em>_A_target</em></td><td>)</td>
127           <td></td>
128         </tr>
129       </table>
130   </td>
131   <td class="mlabels-right">
132 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
133   </tr>
134 </table>
135 </div><div class="memdoc">
136
137 <p>Constructor. </p>
138 <dl class="params"><dt>Parameters</dt><dd>
139   <table class="params">
140     <tr><td class="paramname">_A_target</td><td>The reference to limit. </td></tr>
141   </table>
142   </dd>
143 </dl>
144
145 </div>
146 </div>
147 <h2 class="groupheader">Member Function Documentation</h2>
148 <a class="anchor" id="a951ae1d15397406945d4a6b67f30936f"></a>
149 <div class="memitem">
150 <div class="memproto">
151 <div class="memtemplate">
152 template &lt;class T_type, bool I_derives_trackable = std::is_base_of&lt;trackable, std::decay_t&lt;T_type&gt;&gt;::value&gt; </div>
153 <table class="mlabels">
154   <tr>
155   <td class="mlabels-left">
156       <table class="memname">
157         <tr>
158           <td class="memname">T_type&amp; <a class="el" href="classsigc_1_1limit__reference.html">sigc::limit_reference</a>&lt; T_type, I_derives_trackable &gt;::invoke </td>
159           <td>(</td>
160           <td class="paramname"></td><td>)</td>
161           <td> const</td>
162         </tr>
163       </table>
164   </td>
165   <td class="mlabels-right">
166 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
167   </tr>
168 </table>
169 </div><div class="memdoc">
170
171 <p>Retrieve the reference. </p>
172 <p>This is always a reference to the derived instance. </p><dl class="section return"><dt>Returns</dt><dd>The reference. </dd></dl>
173
174 </div>
175 </div>
176 <a class="anchor" id="a35d9d66be606486266e53ff416ec0847"></a>
177 <div class="memitem">
178 <div class="memproto">
179 <div class="memtemplate">
180 template &lt;class T_type, bool I_derives_trackable = std::is_base_of&lt;trackable, std::decay_t&lt;T_type&gt;&gt;::value&gt; </div>
181 <table class="mlabels">
182   <tr>
183   <td class="mlabels-left">
184       <table class="memname">
185         <tr>
186           <td class="memname">const <a class="el" href="classsigc_1_1limit__reference.html#a1092df7238eb5703afa2fabfbf3cf3a9">reference_type</a>&amp; <a class="el" href="classsigc_1_1limit__reference.html">sigc::limit_reference</a>&lt; T_type, I_derives_trackable &gt;::visit </td>
187           <td>(</td>
188           <td class="paramname"></td><td>)</td>
189           <td> const</td>
190         </tr>
191       </table>
192   </td>
193   <td class="mlabels-right">
194 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
195   </tr>
196 </table>
197 </div><div class="memdoc">
198
199 <p>Retrieve the entity to visit for <a class="el" href="group__sigcfunctors.html#ga64cb7832acc1e58efb5ffe0b4f5e9404" title="This function performs a functor on each of the targets of a functor. ">visit_each()</a>. </p>
200 <p>Depending on the template specialization, this is either a derived reference, or <a class="el" href="structsigc_1_1trackable.html" title="Base class for objects with auto-disconnection. ">sigc::trackable</a>&amp; if T_type derives from <a class="el" href="structsigc_1_1trackable.html" title="Base class for objects with auto-disconnection. ">sigc::trackable</a>. </p><dl class="section return"><dt>Returns</dt><dd>The reference. </dd></dl>
201
202 </div>
203 </div>
204 </div><!-- contents -->
205 <!-- start footer part -->
206 <hr class="footer"/><address class="footer"><small>
207 Generated on Wed Mar 16 2016 20:53:28 for libsigc++ by &#160;<a href="http://www.doxygen.org/index.html">
208 <img class="footer" src="doxygen.png" alt="doxygen"/>
209 </a> 1.8.9.1
210 </small></address>
211 </body>
212 </html>