Imported Upstream version 2.99.2
[platform/upstream/libsigc++.git] / docs / reference / html / group__mem__fun.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++: mem_fun()</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><a href="annotated.html"><span>Classes</span></a></li>
38     </ul>
39   </div>
40 </div><!-- top -->
41 <div class="header">
42   <div class="summary">
43 <a href="#func-members">Functions</a>  </div>
44   <div class="headertitle">
45 <div class="title">mem_fun()<div class="ingroups"><a class="el" href="group__sigcfunctors.html">Functors</a></div></div>  </div>
46 </div><!--header-->
47 <div class="contents">
48
49 <p><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> is used to convert a pointer to a method to a functor.  
50 <a href="#details">More...</a></p>
51 <table class="memberdecls">
52 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
53 Functions</h2></td></tr>
54 <tr class="memitem:ga6ed5c519845b36eb7c6461ebd2a073c9"><td class="memTemplParams" colspan="2">template&lt;class T_return , class T_obj , class... T_arg&gt; </td></tr>
55 <tr class="memitem:ga6ed5c519845b36eb7c6461ebd2a073c9"><td class="memTemplItemLeft" align="right" valign="top">decltype(auto)&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__mem__fun.html#ga6ed5c519845b36eb7c6461ebd2a073c9">sigc::mem_fun</a> (T_return(T_obj::* _A_func)(T_arg...))</td></tr>
56 <tr class="memdesc:ga6ed5c519845b36eb7c6461ebd2a073c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a functor of type <a class="el" href="classsigc_1_1mem__functor.html">sigc::mem_functor</a> which wraps a method.  <a href="#ga6ed5c519845b36eb7c6461ebd2a073c9">More...</a><br /></td></tr>
57 <tr class="separator:ga6ed5c519845b36eb7c6461ebd2a073c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
58 <tr class="memitem:gae28d6895a9f21c285fe420e928ff046d"><td class="memTemplParams" colspan="2">template&lt;class T_return , class T_obj , class T_obj2 , class... T_arg&gt; </td></tr>
59 <tr class="memitem:gae28d6895a9f21c285fe420e928ff046d"><td class="memTemplItemLeft" align="right" valign="top">decltype(auto)&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__mem__fun.html#gae28d6895a9f21c285fe420e928ff046d">sigc::mem_fun</a> (T_obj&amp; _A_obj, T_return(T_obj2::* _A_func)(T_arg...))</td></tr>
60 <tr class="memdesc:gae28d6895a9f21c285fe420e928ff046d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a functor of type <a class="el" href="classsigc_1_1bound__mem__functor.html">sigc::bound_mem_functor</a> which encapsulates a method and an object instance.  <a href="#gae28d6895a9f21c285fe420e928ff046d">More...</a><br /></td></tr>
61 <tr class="separator:gae28d6895a9f21c285fe420e928ff046d"><td class="memSeparator" colspan="2">&#160;</td></tr>
62 </table>
63 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
64 <p><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> is used to convert a pointer to a method to a functor. </p>
65 <p>Optionally, a reference or pointer to an object can be bound to the functor.</p>
66 <dl class="section note"><dt>Note</dt><dd>Only if the object type inherits from <a class="el" href="structsigc_1_1trackable.html" title="Base class for objects with auto-disconnection. ">sigc::trackable</a>, and the functor returned from <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> is assigned to a <a class="el" href="classsigc_1_1slot.html" title="Converts an arbitrary functor to a unified type which is opaque. ">sigc::slot</a>, is the functor automatically cleared when the object goes out of scope!</dd></dl>
67 <p>If the member function pointer is to an overloaded type, you must specify the types using template arguments starting with the first argument. It is not necessary to supply the return type.</p>
68 <dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"><span class="keyword">struct </span>foo : <span class="keyword">public</span> <a class="code" href="structsigc_1_1trackable.html">sigc::trackable</a></div>
69 <div class="line">{</div>
70 <div class="line">  <span class="keywordtype">void</span> bar(<span class="keywordtype">int</span>) {}</div>
71 <div class="line">};</div>
72 <div class="line">foo my_foo;</div>
73 <div class="line"><a class="code" href="classsigc_1_1slot.html">sigc::slot&lt;void(int)&gt;</a> sl = <a class="code" href="group__mem__fun.html#ga6ed5c519845b36eb7c6461ebd2a073c9">sigc::mem_fun</a>(my_foo, &amp;foo::bar);</div>
74 <div class="line"><span class="comment">// Note: f is not a slot. It will not be invalidated when my_foo is deleted.</span></div>
75 <div class="line"><span class="keyword">auto</span> f = <a class="code" href="group__mem__fun.html#ga6ed5c519845b36eb7c6461ebd2a073c9">sigc::mem_fun</a>(my_foo, &amp;foo::bar); <span class="comment">// Usually not what you want.</span></div>
76 </div><!-- fragment --></dd></dl>
77 <p>For const methods <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> takes a const reference or pointer to an object.</p>
78 <dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"><span class="keyword">struct </span>foo : <span class="keyword">public</span> <a class="code" href="structsigc_1_1trackable.html">sigc::trackable</a></div>
79 <div class="line">{</div>
80 <div class="line">  <span class="keywordtype">void</span> bar(<span class="keywordtype">int</span>)<span class="keyword"> const </span>{}</div>
81 <div class="line">};</div>
82 <div class="line"><span class="keyword">const</span> foo my_foo;</div>
83 <div class="line"><a class="code" href="classsigc_1_1slot.html">sigc::slot&lt;void(int)&gt;</a> sl = <a class="code" href="group__mem__fun.html#ga6ed5c519845b36eb7c6461ebd2a073c9">sigc::mem_fun</a>(my_foo, &amp;foo::bar);</div>
84 </div><!-- fragment --></dd></dl>
85 <p>Use mem_fun#() if there is an ambiguity as to the number of arguments.</p>
86 <dl class="section user"><dt>Example:</dt><dd><div class="fragment"><div class="line"><span class="keyword">struct </span>foo : <span class="keyword">public</span> <a class="code" href="structsigc_1_1trackable.html">sigc::trackable</a></div>
87 <div class="line">{</div>
88 <div class="line">  <span class="keywordtype">void</span> bar(<span class="keywordtype">int</span>) {}</div>
89 <div class="line">  <span class="keywordtype">void</span> bar(<span class="keywordtype">float</span>) {}</div>
90 <div class="line">  <span class="keywordtype">void</span> bar(<span class="keywordtype">int</span>, <span class="keywordtype">int</span>) {}</div>
91 <div class="line">};</div>
92 <div class="line">foo my_foo;</div>
93 <div class="line"><a class="code" href="classsigc_1_1slot.html">sigc::slot&lt;void(int)&gt;</a> sl = sigc::mem_fun1&lt;int&gt;(my_foo, &amp;foo::bar);</div>
94 </div><!-- fragment --> </dd></dl>
95 <h2 class="groupheader">Function Documentation</h2>
96 <a class="anchor" id="ga6ed5c519845b36eb7c6461ebd2a073c9"></a>
97 <div class="memitem">
98 <div class="memproto">
99 <div class="memtemplate">
100 template &lt;class T_return , class T_obj , class... T_arg&gt; </div>
101 <table class="mlabels">
102   <tr>
103   <td class="mlabels-left">
104       <table class="memname">
105         <tr>
106           <td class="memname">decltype(auto) sigc::mem_fun </td>
107           <td>(</td>
108           <td class="paramtype">T_return(T_obj::*)(T_arg...)&#160;</td>
109           <td class="paramname"><em>_A_func</em></td><td>)</td>
110           <td></td>
111         </tr>
112       </table>
113   </td>
114   <td class="mlabels-right">
115 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
116   </tr>
117 </table>
118 </div><div class="memdoc">
119
120 <p>Creates a functor of type <a class="el" href="classsigc_1_1mem__functor.html">sigc::mem_functor</a> which wraps a method. </p>
121 <p>Creates a functor of type sigc::const_volatile_mem_functor which wraps a const volatile method.</p>
122 <p>Creates a functor of type sigc::volatile_mem_functor which wraps a volatile method.</p>
123 <p>Creates a functor of type sigc::const_mem_functor which wraps a const method.</p>
124 <dl class="params"><dt>Parameters</dt><dd>
125   <table class="params">
126     <tr><td class="paramname">_A_func</td><td>Pointer to method that should be wrapped. </td></tr>
127   </table>
128   </dd>
129 </dl>
130 <dl class="section return"><dt>Returns</dt><dd>Functor that executes _A_func on invokation. </dd></dl>
131
132 </div>
133 </div>
134 <a class="anchor" id="gae28d6895a9f21c285fe420e928ff046d"></a>
135 <div class="memitem">
136 <div class="memproto">
137 <div class="memtemplate">
138 template &lt;class T_return , class T_obj , class T_obj2 , class... T_arg&gt; </div>
139 <table class="mlabels">
140   <tr>
141   <td class="mlabels-left">
142       <table class="memname">
143         <tr>
144           <td class="memname">decltype(auto) sigc::mem_fun </td>
145           <td>(</td>
146           <td class="paramtype">T_obj &amp;&#160;</td>
147           <td class="paramname"><em>_A_obj</em>, </td>
148         </tr>
149         <tr>
150           <td class="paramkey"></td>
151           <td></td>
152           <td class="paramtype">T_return(T_obj2::*)(T_arg...)&#160;</td>
153           <td class="paramname"><em>_A_func</em>&#160;</td>
154         </tr>
155         <tr>
156           <td></td>
157           <td>)</td>
158           <td></td><td></td>
159         </tr>
160       </table>
161   </td>
162   <td class="mlabels-right">
163 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
164   </tr>
165 </table>
166 </div><div class="memdoc">
167
168 <p>Creates a functor of type <a class="el" href="classsigc_1_1bound__mem__functor.html">sigc::bound_mem_functor</a> which encapsulates a method and an object instance. </p>
169 <p>Creates a functor of type sigc::bound_const_volatile_mem_functor which encapsulates a method and an object instance.</p>
170 <p>Creates a functor of type sigc::bound_volatile_mem_functor which encapsulates a method and an object instance.</p>
171 <p>Creates a functor of type sigc::bound_const_mem_functor which encapsulates a method and an object instance.</p>
172 <dl class="params"><dt>Parameters</dt><dd>
173   <table class="params">
174     <tr><td class="paramname">_A_obj</td><td>Reference to object instance the functor should operate on. </td></tr>
175     <tr><td class="paramname">_A_func</td><td>Pointer to method that should be wrapped. </td></tr>
176   </table>
177   </dd>
178 </dl>
179 <dl class="section return"><dt>Returns</dt><dd>Functor that executes <em>_A_func</em> on invokation. </dd></dl>
180
181 </div>
182 </div>
183 </div><!-- contents -->
184 <!-- start footer part -->
185 <hr class="footer"/><address class="footer"><small>
186 Generated on Wed Mar 16 2016 20:53:27 for libsigc++ by &#160;<a href="http://www.doxygen.org/index.html">
187 <img class="footer" src="doxygen.png" alt="doxygen"/>
188 </a> 1.8.9.1
189 </small></address>
190 </body>
191 </html>