]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/numeric/conversion/doc/html/boost_numericconversion/conversion_traits___traits_class.html
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / numeric / conversion / doc / html / boost_numericconversion / conversion_traits___traits_class.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>conversion_traits&lt;&gt; traits class</title>
5 <link rel="stylesheet" href="../boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
7 <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
8 <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.NumericConversion">
9 <link rel="prev" href="bounds___traits_class.html" title="bounds&lt;&gt; traits class">
10 <link rel="next" href="numeric_converter_policy_classes.html" title="Numeric Converter Policy Classes">
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="bounds___traits_class.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="numeric_converter_policy_classes.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
24 </div>
25 <div class="section">
26 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
27 <a name="boost_numericconversion.conversion_traits___traits_class"></a><a class="link" href="conversion_traits___traits_class.html" title="conversion_traits&lt;&gt; traits class">conversion_traits&lt;&gt;
28 traits class</a>
29 </h2></div></div></div>
30 <div class="toc"><dl class="toc">
31 <dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types">Types</a></span></dt>
32 <dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.examples">Examples</a></span></dt>
33 </dl></div>
34 <div class="section">
35 <div class="titlepage"><div><div><h3 class="title">
36 <a name="boost_numericconversion.conversion_traits___traits_class.types"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types" title="Types">Types</a>
37 </h3></div></div></div>
38 <div class="toc"><dl class="toc">
39 <dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_int_float_mixture_enum">enumeration
40 int_float_mixture_enum</a></span></dt>
41 <dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_sign_mixture_enum">enumeration
42 sign_mixture_enum</a></span></dt>
43 <dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_udt_builtin_mixture_enum">enumeration
44 udt_builtin_mixture_enum</a></span></dt>
45 <dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_int_float_mixture__">template
46 class int_float_mixture&lt;&gt;</a></span></dt>
47 <dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_sign_mixture__">template
48 class sign_mixture&lt;&gt;</a></span></dt>
49 <dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_udt_builtin_mixture__">template
50 class udt_builtin_mixture&lt;&gt;</a></span></dt>
51 <dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_is_subranged__">template
52 class is_subranged&lt;&gt;</a></span></dt>
53 <dt><span class="section"><a href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_conversion_traits__">template
54 class conversion_traits&lt;&gt;</a></span></dt>
55 </dl></div>
56 <div class="section">
57 <div class="titlepage"><div><div><h4 class="title">
58 <a name="boost_numericconversion.conversion_traits___traits_class.types.enumeration_int_float_mixture_enum"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_int_float_mixture_enum" title="enumeration int_float_mixture_enum">enumeration
59 int_float_mixture_enum</a>
60 </h4></div></div></div>
61 <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">numeric</span> <span class="special">{</span>
62
63 <span class="keyword">enum</span> <span class="identifier">int_float_mixture_enum</span>
64 <span class="special">{</span>
65 <span class="identifier">integral_to_integral</span>
66 <span class="special">,</span><span class="identifier">integral_to_float</span>
67 <span class="special">,</span><span class="identifier">float_to_integral</span>
68 <span class="special">,</span><span class="identifier">float_to_float</span>
69 <span class="special">}</span> <span class="special">;</span>
70
71 <span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric</span>
72 </pre>
73 </div>
74 <div class="section">
75 <div class="titlepage"><div><div><h4 class="title">
76 <a name="boost_numericconversion.conversion_traits___traits_class.types.enumeration_sign_mixture_enum"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_sign_mixture_enum" title="enumeration sign_mixture_enum">enumeration
77 sign_mixture_enum</a>
78 </h4></div></div></div>
79 <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">numeric</span> <span class="special">{</span>
80
81 <span class="keyword">enum</span> <span class="identifier">sign_mixture_enum</span>
82 <span class="special">{</span>
83 <span class="identifier">unsigned_to_unsigned</span>
84 <span class="special">,</span><span class="identifier">signed_to_signed</span>
85 <span class="special">,</span><span class="identifier">signed_to_unsigned</span>
86 <span class="special">,</span><span class="identifier">unsigned_to_signed</span>
87 <span class="special">}</span> <span class="special">;</span>
88
89 <span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric</span>
90 </pre>
91 </div>
92 <div class="section">
93 <div class="titlepage"><div><div><h4 class="title">
94 <a name="boost_numericconversion.conversion_traits___traits_class.types.enumeration_udt_builtin_mixture_enum"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_udt_builtin_mixture_enum" title="enumeration udt_builtin_mixture_enum">enumeration
95 udt_builtin_mixture_enum</a>
96 </h4></div></div></div>
97 <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">numeric</span> <span class="special">{</span>
98
99 <span class="keyword">enum</span> <span class="identifier">udt_builtin_mixture_enum</span>
100 <span class="special">{</span>
101 <span class="identifier">builtin_to_builtin</span>
102 <span class="special">,</span><span class="identifier">builtin_to_udt</span>
103 <span class="special">,</span><span class="identifier">udt_to_builtin</span>
104 <span class="special">,</span><span class="identifier">udt_to_udt</span>
105 <span class="special">}</span> <span class="special">;</span>
106
107 <span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric</span>
108 </pre>
109 </div>
110 <div class="section">
111 <div class="titlepage"><div><div><h4 class="title">
112 <a name="boost_numericconversion.conversion_traits___traits_class.types.template_class_int_float_mixture__"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_int_float_mixture__" title="template class int_float_mixture&lt;&gt;">template
113 class int_float_mixture&lt;&gt;</a>
114 </h4></div></div></div>
115 <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">numeric</span> <span class="special">{</span>
116
117 <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">S</span><span class="special">&gt;</span>
118 <span class="keyword">struct</span> <span class="identifier">int_float_mixture</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">integral_c</span><span class="special">&lt;</span><span class="identifier">int_float_mixture_enum</span><span class="special">,</span> <span class="identifier">impl</span><span class="special">-</span><span class="identifier">def</span><span class="special">-</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="special">{}</span> <span class="special">;</span>
119
120 <span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric</span>
121 </pre>
122 <p>
123 Classifying <code class="computeroutput"><span class="identifier">S</span></code> and <code class="computeroutput"><span class="identifier">T</span></code> as either integral or float, this
124 <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
125 Integral Constant</a> indicates the combination of these attributes.
126 </p>
127 <p>
128 Its <code class="computeroutput"><span class="special">::</span><span class="identifier">value</span></code>
129 is of enumeration type <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_int_float_mixture_enum" title="enumeration int_float_mixture_enum"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">int_float_mixture_enum</span></code></a>
130 </p>
131 </div>
132 <div class="section">
133 <div class="titlepage"><div><div><h4 class="title">
134 <a name="boost_numericconversion.conversion_traits___traits_class.types.template_class_sign_mixture__"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_sign_mixture__" title="template class sign_mixture&lt;&gt;">template
135 class sign_mixture&lt;&gt;</a>
136 </h4></div></div></div>
137 <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">numeric</span> <span class="special">{</span>
138
139 <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">S</span><span class="special">&gt;</span>
140 <span class="keyword">struct</span> <span class="identifier">sign_mixture</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">integral_c</span><span class="special">&lt;</span><span class="identifier">sign_mixture_enum</span><span class="special">,</span> <span class="identifier">impl</span><span class="special">-</span><span class="identifier">def</span><span class="special">-</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="special">{}</span> <span class="special">;</span>
141
142 <span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric</span>
143 </pre>
144 <p>
145 Classifying <code class="computeroutput"><span class="identifier">S</span></code> and <code class="computeroutput"><span class="identifier">T</span></code> as either signed or unsigned, this
146 <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
147 Integral Constant</a> indicates the combination of these attributes.
148 </p>
149 <p>
150 Its <code class="computeroutput"><span class="special">::</span><span class="identifier">value</span></code>
151 is of enumeration type <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_sign_mixture_enum" title="enumeration sign_mixture_enum"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">sign_mixture_enum</span></code></a>
152 </p>
153 </div>
154 <div class="section">
155 <div class="titlepage"><div><div><h4 class="title">
156 <a name="boost_numericconversion.conversion_traits___traits_class.types.template_class_udt_builtin_mixture__"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_udt_builtin_mixture__" title="template class udt_builtin_mixture&lt;&gt;">template
157 class udt_builtin_mixture&lt;&gt;</a>
158 </h4></div></div></div>
159 <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">numeric</span> <span class="special">{</span>
160
161 <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">S</span><span class="special">&gt;</span>
162 <span class="keyword">struct</span> <span class="identifier">udt_builtin_mixture</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">integral_c</span><span class="special">&lt;</span><span class="identifier">udt_builtin__mixture_enum</span><span class="special">,</span> <span class="identifier">impl</span><span class="special">-</span><span class="identifier">def</span><span class="special">-</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="special">{}</span> <span class="special">;</span>
163
164 <span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric</span>
165 </pre>
166 <p>
167 Classifying <code class="computeroutput"><span class="identifier">S</span></code> and <code class="computeroutput"><span class="identifier">T</span></code> as either user-defined or builtin,
168 this <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
169 Integral Constant</a> indicates the combination of these attributes.
170 </p>
171 <p>
172 Its <code class="computeroutput"><span class="special">::</span><span class="identifier">value</span></code>
173 is of enumeration type <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.enumeration_udt_builtin_mixture_enum" title="enumeration udt_builtin_mixture_enum"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">udt_builtin_mixture_enum</span></code></a>
174 </p>
175 </div>
176 <div class="section">
177 <div class="titlepage"><div><div><h4 class="title">
178 <a name="boost_numericconversion.conversion_traits___traits_class.types.template_class_is_subranged__"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_is_subranged__" title="template class is_subranged&lt;&gt;">template
179 class is_subranged&lt;&gt;</a>
180 </h4></div></div></div>
181 <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">numeric</span> <span class="special">{</span>
182
183 <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">S</span><span class="special">&gt;</span>
184 <span class="keyword">struct</span> <span class="identifier">is_subranged</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">bool_</span><span class="special">&lt;</span><span class="identifier">impl</span><span class="special">-</span><span class="identifier">def</span><span class="special">-</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="special">{}</span> <span class="special">;</span>
185
186 <span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace boost::numeric</span>
187 </pre>
188 <p>
189 Indicates if the range of the target type <code class="computeroutput"><span class="identifier">T</span></code>
190 is a subset of the range of the source type <code class="computeroutput"><span class="identifier">S</span></code>.
191 That is: if there are some source values which fall out of the Target type's
192 range.
193 </p>
194 <p>
195 It is a boolean <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
196 Integral Constant</a> .
197 </p>
198 <p>
199 It does not indicate if a particular conversion is effectively out of range;
200 it indicates that some conversion might be out of range because not all
201 the source values are representable as Target type.
202 </p>
203 </div>
204 <div class="section">
205 <div class="titlepage"><div><div><h4 class="title">
206 <a name="boost_numericconversion.conversion_traits___traits_class.types.template_class_conversion_traits__"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_conversion_traits__" title="template class conversion_traits&lt;&gt;">template
207 class conversion_traits&lt;&gt;</a>
208 </h4></div></div></div>
209 <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">numeric</span> <span class="special">{</span>
210
211 <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">S</span><span class="special">&gt;</span>
212 <span class="keyword">struct</span> <span class="identifier">conversion_traits</span>
213 <span class="special">{</span>
214 <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">integral_c</span><span class="special">&lt;</span><span class="identifier">int_float_mixture_enum</span> <span class="special">,</span> <span class="special">...&gt;</span> <span class="identifier">int_float_mixture</span> <span class="special">;</span>
215 <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">integral_c</span><span class="special">&lt;</span><span class="identifier">sign_mixture_enum</span> <span class="special">,</span> <span class="special">...&gt;</span> <span class="identifier">sign_mixture</span><span class="special">;</span>
216 <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">integral_c</span><span class="special">&lt;</span><span class="identifier">udt_builtin_mixture_enum</span><span class="special">,</span> <span class="special">...&gt;</span> <span class="identifier">udt_builtin_mixture</span> <span class="special">;</span>
217
218 <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">bool_</span><span class="special">&lt;...&gt;</span> <span class="identifier">subranged</span> <span class="special">;</span>
219 <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">bool_</span><span class="special">&lt;...&gt;</span> <span class="identifier">trivial</span> <span class="special">;</span>
220
221 <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">target_type</span> <span class="special">;</span>
222 <span class="keyword">typedef</span> <span class="identifier">S</span> <span class="identifier">source_type</span> <span class="special">;</span>
223 <span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">argument_type</span> <span class="special">;</span>
224 <span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">result_type</span> <span class="special">;</span>
225 <span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">supertype</span> <span class="special">;</span>
226 <span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">subtype</span> <span class="special">;</span>
227 <span class="special">}</span> <span class="special">;</span>
228
229 <span class="special">}</span> <span class="special">}</span> <span class="comment">// namespace numeric, namespace boost</span>
230 </pre>
231 <p>
232 This traits class indicates some properties of a <span class="emphasis"><em>numeric conversion</em></span>
233 direction: from a source type <code class="computeroutput"><span class="identifier">S</span></code>
234 to a target type <code class="computeroutput"><span class="identifier">T</span></code>. It
235 does not indicate the properties of a <span class="emphasis"><em>specific</em></span> conversion,
236 but of the conversion direction. See <a class="link" href="definitions.html#boost_numericconversion.definitions.subranged_conversion_direction__subtype_and_supertype" title="Subranged Conversion Direction, Subtype and Supertype">Definitions</a>
237 for details.
238 </p>
239 <p>
240 The traits class provides the following <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
241 Integral Constant</a> \s of enumeration type. They express the combination
242 of certain attributes of the Source and Target types (thus they are call
243 mixture):
244 </p>
245 <div class="informaltable"><table class="table">
246 <colgroup>
247 <col>
248 <col>
249 </colgroup>
250 <thead><tr>
251 <th>
252 </th>
253 <th>
254 </th>
255 </tr></thead>
256 <tbody>
257 <tr>
258 <td>
259 <p>
260 <span class="bold"><strong>int_float_mixture </strong></span>
261 </p>
262 </td>
263 <td>
264 <p>
265 Same as given by the traits class <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_int_float_mixture__" title="template class int_float_mixture&lt;&gt;">int_float_mixture</a>
266 </p>
267 </td>
268 </tr>
269 <tr>
270 <td>
271 <p>
272 <span class="bold"><strong>sign_mixture </strong></span>
273 </p>
274 </td>
275 <td>
276 <p>
277 Same as given by the traits class <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_sign_mixture__" title="template class sign_mixture&lt;&gt;">sign_mixture</a>
278 </p>
279 </td>
280 </tr>
281 <tr>
282 <td>
283 <p>
284 <span class="bold"><strong>udt_builtin_mixture </strong></span>
285 </p>
286 </td>
287 <td>
288 <p>
289 Same as given by the traits class <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_udt_builtin_mixture__" title="template class udt_builtin_mixture&lt;&gt;">udt_builtin_mixture</a>
290 </p>
291 </td>
292 </tr>
293 </tbody>
294 </table></div>
295 <p>
296 The traits class provides the following <a href="../../../../../mpl/doc/refmanual/integral-constant.html" target="_top">MPL's
297 Integral Constant</a> \s of boolean type which indicates indirectly
298 the relation between the Source and Target ranges (see <a class="link" href="definitions.html#boost_numericconversion.definitions.range_and_precision" title="Range and Precision">Definitions</a>
299 for details).
300 </p>
301 <div class="informaltable"><table class="table">
302 <colgroup>
303 <col>
304 <col>
305 </colgroup>
306 <thead><tr>
307 <th>
308 </th>
309 <th>
310 </th>
311 </tr></thead>
312 <tbody>
313 <tr>
314 <td>
315 <p>
316 subranged
317 </p>
318 </td>
319 <td>
320 <p>
321 Same as given by <a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.types.template_class_is_subranged__" title="template class is_subranged&lt;&gt;">is_subranged</a>
322 </p>
323 </td>
324 </tr>
325 <tr>
326 <td>
327 <p>
328 trivial
329 </p>
330 </td>
331 <td>
332 <p>
333 Indicates if both Source and Target, <span class="underline">without
334 cv-qualifications</span>, are the same type.
335 </p>
336 <p>
337 Its <code class="computeroutput"><span class="special">::</span><span class="identifier">value</span></code>
338 is of boolean type.
339 </p>
340 </td>
341 </tr>
342 </tbody>
343 </table></div>
344 <p>
345 The traits class provides the following types. They are the Source and
346 Target types classified and qualified for different purposes.
347 </p>
348 <div class="informaltable"><table class="table">
349 <colgroup>
350 <col>
351 <col>
352 </colgroup>
353 <thead><tr>
354 <th>
355 </th>
356 <th>
357 </th>
358 </tr></thead>
359 <tbody>
360 <tr>
361 <td>
362 <p>
363 <span class="bold"><strong>target_type</strong></span>
364 </p>
365 </td>
366 <td>
367 <p>
368 The template parameter <code class="computeroutput"><span class="identifier">T</span></code>
369 without cv-qualifications
370 </p>
371 </td>
372 </tr>
373 <tr>
374 <td>
375 <p>
376 <span class="bold"><strong>source_type</strong></span>
377 </p>
378 </td>
379 <td>
380 <p>
381 The template parameter <code class="computeroutput"><span class="identifier">S</span></code>
382 without cv-qualifications
383 </p>
384 </td>
385 </tr>
386 <tr>
387 <td>
388 <p>
389 <span class="bold"><strong>argument_type</strong></span>
390 </p>
391 </td>
392 <td>
393 <p>
394 This type is either source_type or <code class="computeroutput"><span class="identifier">source_type</span>
395 <span class="keyword">const</span><span class="special">&amp;</span></code>.
396 </p>
397 <p>
398 It represents the optimal argument type for the <a class="link" href="converter___function_object.html" title="converter&lt;&gt; function object">converter</a>
399 member functions.
400 </p>
401 <p>
402 If S is a built-in type, this is <code class="computeroutput"><span class="identifier">source_type</span></code>,
403 otherwise, this is <code class="computeroutput"><span class="identifier">source_type</span>
404 <span class="keyword">const</span><span class="special">&amp;</span></code>.
405 </p>
406 </td>
407 </tr>
408 <tr>
409 <td>
410 <p>
411 <span class="bold"><strong>result_type</strong></span>
412 </p>
413 </td>
414 <td>
415 <p>
416 This type is either target_type or target_type const&amp;
417 </p>
418 <p>
419 It represents the return type of the <a class="link" href="converter___function_object.html" title="converter&lt;&gt; function object">converter</a>
420 member functions.
421 </p>
422 <p>
423 If <code class="computeroutput"><span class="identifier">T</span><span class="special">==</span><span class="identifier">S</span></code>, it is <code class="computeroutput"><span class="identifier">target_type</span>
424 <span class="keyword">const</span><span class="special">&amp;</span></code>,
425 otherwise, it is <code class="computeroutput"><span class="identifier">target_type</span></code>.
426 </p>
427 </td>
428 </tr>
429 <tr>
430 <td>
431 <p>
432 <span class="bold"><strong>supertype</strong></span>
433 </p>
434 </td>
435 <td>
436 <p>
437 If the conversion is subranged, it is <code class="computeroutput"><span class="identifier">source_type</span></code>,
438 otherwise, it is <code class="computeroutput"><span class="identifier">target_type</span></code>
439 </p>
440 </td>
441 </tr>
442 <tr>
443 <td>
444 <p>
445 <span class="bold"><strong>subtype</strong></span>
446 </p>
447 </td>
448 <td>
449 <p>
450 If the conversion is subranged, it is <code class="computeroutput"><span class="identifier">target_type</span></code>,
451 otherwise, it is <code class="computeroutput"><span class="identifier">source_type</span></code>
452 </p>
453 </td>
454 </tr>
455 </tbody>
456 </table></div>
457 </div>
458 </div>
459 <div class="section">
460 <div class="titlepage"><div><div><h3 class="title">
461 <a name="boost_numericconversion.conversion_traits___traits_class.examples"></a><a class="link" href="conversion_traits___traits_class.html#boost_numericconversion.conversion_traits___traits_class.examples" title="Examples">Examples</a>
462 </h3></div></div></div>
463 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">cassert</span><span class="special">&gt;</span>
464 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">typeinfo</span><span class="special">&gt;</span>
465 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">numeric</span><span class="special">/</span><span class="identifier">conversion</span><span class="special">/</span><span class="identifier">conversion_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
466
467 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
468 <span class="special">{</span>
469
470 <span class="comment">// A trivial conversion.</span>
471 <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">,</span><span class="keyword">short</span><span class="special">&gt;</span> <span class="identifier">Short2Short_Traits</span> <span class="special">;</span>
472 <span class="identifier">assert</span> <span class="special">(</span> <span class="identifier">Short2Short_Traits</span><span class="special">::</span><span class="identifier">trivial</span><span class="special">::</span><span class="identifier">value</span> <span class="special">)</span> <span class="special">;</span>
473
474 <span class="comment">// A subranged conversion.</span>
475 <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">UInt2Double_Traits</span> <span class="special">;</span>
476 <span class="identifier">assert</span> <span class="special">(</span> <span class="identifier">UInt2Double_Traits</span><span class="special">::</span><span class="identifier">int_float_mixture</span><span class="special">::</span><span class="identifier">value</span> <span class="special">==</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">integral_to_float</span> <span class="special">)</span> <span class="special">;</span>
477 <span class="identifier">assert</span> <span class="special">(</span> <span class="identifier">UInt2Double_Traits</span><span class="special">::</span><span class="identifier">sign_mixture</span><span class="special">::</span><span class="identifier">value</span> <span class="special">==</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">unsigned_to_signed</span> <span class="special">)</span> <span class="special">;</span>
478 <span class="identifier">assert</span> <span class="special">(</span> <span class="special">!</span><span class="identifier">UInt2Double_Traits</span><span class="special">::</span><span class="identifier">subranged</span><span class="special">::</span><span class="identifier">value</span> <span class="special">)</span> <span class="special">;</span>
479 <span class="identifier">assert</span> <span class="special">(</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">UInt2Double_Traits</span><span class="special">::</span><span class="identifier">supertype</span><span class="special">)</span> <span class="special">==</span> <span class="keyword">typeid</span><span class="special">(</span><span class="keyword">double</span><span class="special">)</span> <span class="special">)</span> <span class="special">;</span>
480 <span class="identifier">assert</span> <span class="special">(</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">UInt2Double_Traits</span><span class="special">::</span><span class="identifier">subtype</span><span class="special">)</span> <span class="special">==</span> <span class="keyword">typeid</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">)</span> <span class="special">)</span> <span class="special">;</span>
481
482 <span class="comment">// A doubly subranged conversion.</span>
483 <span class="identifier">assert</span> <span class="special">(</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">&gt;::</span><span class="identifier">subranged</span><span class="special">::</span><span class="identifier">value</span><span class="special">)</span> <span class="special">);</span>
484 <span class="identifier">assert</span> <span class="special">(</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">conversion_traits</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">,</span> <span class="keyword">short</span><span class="special">&gt;::</span><span class="identifier">subranged</span><span class="special">::</span><span class="identifier">value</span><span class="special">)</span> <span class="special">);</span>
485
486 <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
487 <span class="special">}</span>
488 </pre>
489 </div>
490 </div>
491 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
492 <td align="left"></td>
493 <td align="right"><div class="copyright-footer">Copyright &#169; 2004-2007 Fernando
494 Luis Cacciola Carballal<p>
495 Distributed under the Boost Software License, Version 1.0. (See accompanying
496 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>)
497 </p>
498 </div></td>
499 </tr></table>
500 <hr>
501 <div class="spirit-nav">
502 <a accesskey="p" href="bounds___traits_class.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="numeric_converter_policy_classes.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
503 </div>
504 </body>
505 </html>