3 <meta http-equiv=
"Content-Type" content=
"text/html; charset=US-ASCII">
4 <title>conversion_traits
<> 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 1. Boost.NumericConversion">
8 <link rel=
"up" href=
"../index.html" title=
"Chapter 1. Boost.NumericConversion">
9 <link rel=
"prev" href=
"bounds___traits_class.html" title=
"bounds<> traits class">
10 <link rel=
"next" href=
"numeric_converter_policy_classes.html" title=
"Numeric Converter Policy Classes">
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>
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>
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<> traits class">conversion_traits
<>
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>
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
<></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
<></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
<></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
<></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
<></a></span></dt>
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>
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>
71 <span class=
"special">}
</span> <span class=
"special">}
</span> <span class=
"comment">// namespace boost::numeric
</span>
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
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>
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>
89 <span class=
"special">}
</span> <span class=
"special">}
</span> <span class=
"comment">// namespace boost::numeric
</span>
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>
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>
107 <span class=
"special">}
</span> <span class=
"special">}
</span> <span class=
"comment">// namespace boost::numeric
</span>
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<>">template
113 class int_float_mixture
<></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>
117 <span class=
"keyword">template
</span> <span class=
"special"><</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">></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"><</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">></span> <span class=
"special">{}
</span> <span class=
"special">;
</span>
120 <span class=
"special">}
</span> <span class=
"special">}
</span> <span class=
"comment">// namespace boost::numeric
</span>
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.
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>
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<>">template
135 class sign_mixture
<></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>
139 <span class=
"keyword">template
</span> <span class=
"special"><</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">></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"><</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">></span> <span class=
"special">{}
</span> <span class=
"special">;
</span>
142 <span class=
"special">}
</span> <span class=
"special">}
</span> <span class=
"comment">// namespace boost::numeric
</span>
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.
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>
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<>">template
157 class udt_builtin_mixture
<></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>
161 <span class=
"keyword">template
</span> <span class=
"special"><</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">></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"><</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">></span> <span class=
"special">{}
</span> <span class=
"special">;
</span>
164 <span class=
"special">}
</span> <span class=
"special">}
</span> <span class=
"comment">// namespace boost::numeric
</span>
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.
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>
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<>">template
179 class is_subranged
<></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>
183 <span class=
"keyword">template
</span> <span class=
"special"><</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">></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"><</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">></span> <span class=
"special">{}
</span> <span class=
"special">;
</span>
186 <span class=
"special">}
</span> <span class=
"special">}
</span> <span class=
"comment">// namespace boost::numeric
</span>
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
195 It is a boolean
<a href=
"../../../../../mpl/doc/refmanual/integral-constant.html" target=
"_top">MPL's
196 Integral Constant
</a> .
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.
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<>">template
207 class conversion_traits
<></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>
211 <span class=
"keyword">template
</span> <span class=
"special"><</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">></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"><</span><span class=
"identifier">int_float_mixture_enum
</span> <span class=
"special">,
</span> <span class=
"special">...
></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"><</span><span class=
"identifier">sign_mixture_enum
</span> <span class=
"special">,
</span> <span class=
"special">...
></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"><</span><span class=
"identifier">udt_builtin_mixture_enum
</span><span class=
"special">,
</span> <span class=
"special">...
></span> <span class=
"identifier">udt_builtin_mixture
</span> <span class=
"special">;
</span>
218 <span class=
"identifier">mpl
</span><span class=
"special">::
</span><span class=
"identifier">bool_
</span><span class=
"special"><...
></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"><...
></span> <span class=
"identifier">trivial
</span> <span class=
"special">;
</span>
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>
229 <span class=
"special">}
</span> <span class=
"special">}
</span> <span class=
"comment">// namespace numeric, namespace boost
</span>
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>
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
245 <div class=
"informaltable"><table class=
"table">
260 <span class=
"bold"><strong>int_float_mixture
</strong></span>
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<>">int_float_mixture
</a>
272 <span class=
"bold"><strong>sign_mixture
</strong></span>
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<>">sign_mixture
</a>
284 <span class=
"bold"><strong>udt_builtin_mixture
</strong></span>
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<>">udt_builtin_mixture
</a>
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>
301 <div class=
"informaltable"><table class=
"table">
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<>">is_subranged
</a>
333 Indicates if both Source and Target,
<span class=
"underline">without
334 cv-qualifications
</span>, are the same type.
337 Its
<code class=
"computeroutput"><span class=
"special">::
</span><span class=
"identifier">value
</span></code>
345 The traits class provides the following types. They are the Source and
346 Target types classified and qualified for different purposes.
348 <div class=
"informaltable"><table class=
"table">
363 <span class=
"bold"><strong>target_type
</strong></span>
368 The template parameter
<code class=
"computeroutput"><span class=
"identifier">T
</span></code>
369 without cv-qualifications
376 <span class=
"bold"><strong>source_type
</strong></span>
381 The template parameter
<code class=
"computeroutput"><span class=
"identifier">S
</span></code>
382 without cv-qualifications
389 <span class=
"bold"><strong>argument_type
</strong></span>
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">&</span></code>.
398 It represents the optimal argument type for the
<a class=
"link" href=
"converter___function_object.html" title=
"converter<> function object">converter
</a>
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">&</span></code>.
411 <span class=
"bold"><strong>result_type
</strong></span>
416 This type is either target_type or target_type const
&
419 It represents the return type of the
<a class=
"link" href=
"converter___function_object.html" title=
"converter<> function object">converter
</a>
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">&</span></code>,
425 otherwise, it is
<code class=
"computeroutput"><span class=
"identifier">target_type
</span></code>.
432 <span class=
"bold"><strong>supertype
</strong></span>
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>
445 <span class=
"bold"><strong>subtype
</strong></span>
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>
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"><</span><span class=
"identifier">cassert
</span><span class=
"special">></span>
464 <span class=
"preprocessor">#include
</span> <span class=
"special"><</span><span class=
"identifier">typeinfo
</span><span class=
"special">></span>
465 <span class=
"preprocessor">#include
</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
</span><span class=
"special">/
</span><span class=
"identifier">conversion_traits
</span><span class=
"special">.
</span><span class=
"identifier">hpp
</span><span class=
"special">></span>
467 <span class=
"keyword">int
</span> <span class=
"identifier">main
</span><span class=
"special">()
</span>
468 <span class=
"special">{
</span>
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"><</span><span class=
"keyword">short
</span><span class=
"special">,
</span><span class=
"keyword">short
</span><span class=
"special">></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>
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"><</span><span class=
"keyword">double
</span><span class=
"special">,
</span><span class=
"keyword">unsigned
</span> <span class=
"keyword">int
</span><span class=
"special">></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>
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"><</span><span class=
"keyword">short
</span><span class=
"special">,
</span> <span class=
"keyword">unsigned
</span> <span class=
"keyword">short
</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>
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"><</span><span class=
"keyword">unsigned
</span> <span class=
"keyword">short
</span><span class=
"special">,
</span> <span class=
"keyword">short
</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>
486 <span class=
"keyword">return
</span> <span class=
"number">0</span><span class=
"special">;
</span>
487 <span class=
"special">}
</span>
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
© 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>)
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>