]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/type_traits/doc/html/boost_typetraits/reference/function_traits.html
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / type_traits / doc / html / boost_typetraits / reference / function_traits.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>function_traits</title>
5 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
7 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
8 <link rel="up" href="../reference.html" title="Alphabetical Reference">
9 <link rel="prev" href="floating_point_promotion.html" title="floating_point_promotion">
10 <link rel="next" href="has_bit_and.html" title="has_bit_and">
11 </head>
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
15 <td align="center"><a href="../../../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../../../more/index.htm">More</a></td>
20 </tr></table>
21 <hr>
22 <div class="spirit-nav">
23 <a accesskey="p" href="floating_point_promotion.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="has_bit_and.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
24 </div>
25 <div class="section">
26 <div class="titlepage"><div><div><h3 class="title">
27 <a name="boost_typetraits.reference.function_traits"></a><a class="link" href="function_traits.html" title="function_traits">function_traits</a>
28 </h3></div></div></div>
29 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">F</span><span class="special">&gt;</span>
30 <span class="keyword">struct</span> <span class="identifier">function_traits</span>
31 <span class="special">{</span>
32 <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">arity</span> <span class="special">=</span> <em class="replaceable"><code>see-below</code></em><span class="special">;</span>
33 <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">result_type</span><span class="special">;</span>
34 <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> arg<em class="replaceable"><code>N</code></em>_type<span class="special">;</span>
35 <span class="special">};</span>
36 </pre>
37 <p>
38 The class template function_traits will only compile if:
39 </p>
40 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
41 <li class="listitem">
42 The compiler supports partial specialization of class templates.
43 </li>
44 <li class="listitem">
45 The template argument <code class="computeroutput"><span class="identifier">F</span></code>
46 is a <span class="emphasis"><em>function type</em></span>, note that this <span class="emphasis"><em><span class="bold"><strong>is not</strong></span></em></span> the same thing as a <span class="emphasis"><em>pointer
47 to a function</em></span>.
48 </li>
49 </ul></div>
50 <div class="tip"><table border="0" summary="Tip">
51 <tr>
52 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../../../doc/src/images/tip.png"></td>
53 <th align="left">Tip</th>
54 </tr>
55 <tr><td align="left" valign="top"><p>
56 function_traits is intended to introspect only C++ functions of the form
57 R (), R( A1 ), R ( A1, ... etc. ) and not function pointers or class member
58 functions. To convert a function pointer type to a suitable type use <a class="link" href="remove_pointer.html" title="remove_pointer">remove_pointer</a>.
59 </p></td></tr>
60 </table></div>
61 <div class="table">
62 <a name="boost_typetraits.reference.function_traits.function_traits_members"></a><p class="title"><b>Table&#160;1.20.&#160;Function Traits Members</b></p>
63 <div class="table-contents"><table class="table" summary="Function Traits Members">
64 <colgroup>
65 <col>
66 <col>
67 </colgroup>
68 <thead><tr>
69 <th>
70 <p>
71 Member
72 </p>
73 </th>
74 <th>
75 <p>
76 Description
77 </p>
78 </th>
79 </tr></thead>
80 <tbody>
81 <tr>
82 <td>
83 <p>
84 <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="identifier">F</span><span class="special">&gt;::</span><span class="identifier">arity</span></code>
85 </p>
86 </td>
87 <td>
88 <p>
89 An integral constant expression that gives the number of arguments
90 accepted by the function type <code class="computeroutput"><span class="identifier">F</span></code>.
91 </p>
92 </td>
93 </tr>
94 <tr>
95 <td>
96 <p>
97 <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="identifier">F</span><span class="special">&gt;::</span><span class="identifier">result_type</span></code>
98 </p>
99 </td>
100 <td>
101 <p>
102 The type returned by function type <code class="computeroutput"><span class="identifier">F</span></code>.
103 </p>
104 </td>
105 </tr>
106 <tr>
107 <td>
108 <p>
109 <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="identifier">F</span><span class="special">&gt;::</span>arg<em class="replaceable"><code>N</code></em>_type</code>
110 </p>
111 </td>
112 <td>
113 <p>
114 The <em class="replaceable"><code>N</code></em>th argument type of function type <code class="computeroutput"><span class="identifier">F</span></code>,
115 where <code class="computeroutput"><span class="number">1</span> <span class="special">&lt;=</span>
116 <span class="identifier">N</span> <span class="special">&lt;=</span>
117 <span class="identifier">arity</span></code> of <code class="computeroutput"><span class="identifier">F</span></code>.
118 </p>
119 </td>
120 </tr>
121 </tbody>
122 </table></div>
123 </div>
124 <br class="table-break"><div class="table">
125 <a name="boost_typetraits.reference.function_traits.examples"></a><p class="title"><b>Table&#160;1.21.&#160;Examples</b></p>
126 <div class="table-contents"><table class="table" summary="Examples">
127 <colgroup>
128 <col>
129 <col>
130 </colgroup>
131 <thead><tr>
132 <th>
133 <p>
134 Expression
135 </p>
136 </th>
137 <th>
138 <p>
139 Result
140 </p>
141 </th>
142 </tr></thead>
143 <tbody>
144 <tr>
145 <td>
146 <p>
147 <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">void</span>
148 <span class="special">(</span><span class="keyword">void</span><span class="special">)&gt;::</span><span class="identifier">arity</span></code>
149 </p>
150 </td>
151 <td>
152 <p>
153 An integral constant expression that has the value 0.
154 </p>
155 </td>
156 </tr>
157 <tr>
158 <td>
159 <p>
160 <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">long</span>
161 <span class="special">(</span><span class="keyword">int</span><span class="special">)&gt;::</span><span class="identifier">arity</span></code>
162 </p>
163 </td>
164 <td>
165 <p>
166 An integral constant expression that has the value 1.
167 </p>
168 </td>
169 </tr>
170 <tr>
171 <td>
172 <p>
173 <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">long</span>
174 <span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">long</span><span class="special">,</span> <span class="keyword">double</span><span class="special">,</span> <span class="keyword">void</span><span class="special">*)&gt;::</span><span class="identifier">arity</span></code>
175 </p>
176 </td>
177 <td>
178 <p>
179 An integral constant expression that has the value 4.
180 </p>
181 </td>
182 </tr>
183 <tr>
184 <td>
185 <p>
186 <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">void</span>
187 <span class="special">(</span><span class="keyword">void</span><span class="special">)&gt;::</span><span class="identifier">result_type</span></code>
188 </p>
189 </td>
190 <td>
191 <p>
192 The type <code class="computeroutput"><span class="keyword">void</span></code>.
193 </p>
194 </td>
195 </tr>
196 <tr>
197 <td>
198 <p>
199 <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">long</span>
200 <span class="special">(</span><span class="keyword">int</span><span class="special">)&gt;::</span><span class="identifier">result_type</span></code>
201 </p>
202 </td>
203 <td>
204 <p>
205 The type <code class="computeroutput"><span class="keyword">long</span></code>.
206 </p>
207 </td>
208 </tr>
209 <tr>
210 <td>
211 <p>
212 <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">long</span>
213 <span class="special">(</span><span class="keyword">int</span><span class="special">)&gt;::</span><span class="identifier">arg1_type</span></code>
214 </p>
215 </td>
216 <td>
217 <p>
218 The type <code class="computeroutput"><span class="keyword">int</span></code>.
219 </p>
220 </td>
221 </tr>
222 <tr>
223 <td>
224 <p>
225 <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">long</span>
226 <span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">long</span><span class="special">,</span> <span class="keyword">double</span><span class="special">,</span> <span class="keyword">void</span><span class="special">*)&gt;::</span><span class="identifier">arg4_type</span></code>
227 </p>
228 </td>
229 <td>
230 <p>
231 The type <code class="computeroutput"><span class="keyword">void</span><span class="special">*</span></code>.
232 </p>
233 </td>
234 </tr>
235 <tr>
236 <td>
237 <p>
238 <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">long</span>
239 <span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">long</span><span class="special">,</span> <span class="keyword">double</span><span class="special">,</span> <span class="keyword">void</span><span class="special">*)&gt;::</span><span class="identifier">arg5_type</span></code>
240 </p>
241 </td>
242 <td>
243 <p>
244 A compiler error: there is no <code class="computeroutput"><span class="identifier">arg5_type</span></code>
245 since there are only four arguments.
246 </p>
247 </td>
248 </tr>
249 <tr>
250 <td>
251 <p>
252 <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">long</span>
253 <span class="special">(*)(</span><span class="keyword">void</span><span class="special">)&gt;::</span><span class="identifier">arity</span></code>
254 </p>
255 </td>
256 <td>
257 <p>
258 A compiler error: argument type is a <span class="emphasis"><em>function pointer</em></span>,
259 and not a <span class="emphasis"><em>function type</em></span>.
260 </p>
261 </td>
262 </tr>
263 </tbody>
264 </table></div>
265 </div>
266 <br class="table-break"><p>
267 <span class="bold"><strong>Compiler Compatibility:</strong></span> All current compilers
268 are supported by this trait.
269 </p>
270 </div>
271 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
272 <td align="left"></td>
273 <td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
274 Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
275 Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
276 Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
277 Watanabe<p>
278 Distributed under the Boost Software License, Version 1.0. (See accompanying
279 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
280 </p>
281 </div></td>
282 </tr></table>
283 <hr>
284 <div class="spirit-nav">
285 <a accesskey="p" href="floating_point_promotion.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="has_bit_and.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
286 </div>
287 </body>
288 </html>