forked from boostorg/type_traits
Update type_traits tests to reflect C++0x.
Make better/simpler use of C++0x intrinsics where available. Change a few traits to C++0x behaviour. Update docs to reflect current intrinsic availability. [SVN r70057]
This commit is contained in:
@ -22,11 +22,13 @@ These two traits are synonyms for each other.
|
||||
__compat If the compiler does not support partial-specialization of class
|
||||
templates, then this template can not be used with function types.
|
||||
|
||||
Without some (as yet unspecified) help from the compiler,
|
||||
Without some (unspecified) help from the compiler,
|
||||
`has_nothrow_constructor` will never report that a class or struct has a
|
||||
non-throwing default-constructor; this is always safe, if possibly sub-optimal.
|
||||
Currently (May 2005) only Visual C++ 8 has the necessary compiler __intrinsics to ensure that this
|
||||
trait "just works".
|
||||
Currently (May 2011) compilers more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0,
|
||||
Intel-11.0, and Codegear have the necessary compiler __intrinsics to ensure that this
|
||||
trait "just works". You may also test to see if the necessary __intrinsics are available
|
||||
by checking to see if the macro `BOOST_HAS_NOTHROW_CONSTRUCTOR` is defined.
|
||||
|
||||
__header ` #include <boost/type_traits/has_nothrow_constructor.hpp>` or ` #include <boost/type_traits.hpp>`
|
||||
|
||||
|
@ -25,8 +25,10 @@ templates, then this template can not be used with function types.
|
||||
Without some (as yet unspecified) help from the compiler,
|
||||
`has_nothrow_copy` will never report that a class or struct has a
|
||||
non-throwing copy-constructor; this is always safe, if possibly sub-optimal.
|
||||
Currently (May 2005) only Visual C++ 8 has the necessary compiler __intrinsics to ensure that this
|
||||
trait "just works".
|
||||
Currently (May 2011) compilers more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0,
|
||||
Intel-11.0, and Codegear have the necessary compiler __intrinsics to ensure that this
|
||||
trait "just works". You may also test to see if the necessary __intrinsics are available
|
||||
by checking to see if the macro `BOOST_HAS_NOTHROW_COPY` is defined.
|
||||
|
||||
__header ` #include <boost/type_traits/has_nothrow_copy.hpp>` or ` #include <boost/type_traits.hpp>`
|
||||
|
||||
|
@ -21,9 +21,12 @@ templates, then this template can not be used with function types.
|
||||
|
||||
Without some (as yet unspecified) help from the compiler,
|
||||
has_trivial_assign will never report that a user-defined class or struct has a
|
||||
trivial constructor; this is always safe, if possibly sub-optimal. Currently
|
||||
(May 2005) only MWCW 9 and Visual C++ 8 have the necessary compiler __intrinsics to detect
|
||||
user-defined classes with trivial constructors.
|
||||
trivial constructor; this is always safe, if possibly sub-optimal.
|
||||
Currently (May 2011) compilers more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0,
|
||||
Intel-11.0, and Codegear have the necessary compiler __intrinsics to ensure that this
|
||||
trait "just works". You may also test to see if the necessary __intrinsics are available
|
||||
by checking to see if the macro `BOOST_HAS_TRIVIAL_ASSIGN` is defined.
|
||||
|
||||
|
||||
__std_ref 12.8p11.
|
||||
|
||||
|
@ -29,9 +29,12 @@ templates, then this template can not be used with function types.
|
||||
|
||||
Without some (as yet unspecified) help from the compiler,
|
||||
has_trivial_constructor will never report that a user-defined class or struct has a
|
||||
trivial constructor; this is always safe, if possibly sub-optimal. Currently
|
||||
(May 2005) only MWCW 9 and Visual C++ 8 have the necessary compiler __intrinsics to detect
|
||||
user-defined classes with trivial constructors.
|
||||
trivial constructor; this is always safe, if possibly sub-optimal.
|
||||
Currently (May 2011) compilers more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0,
|
||||
Intel-11.0, and Codegear have the necessary compiler __intrinsics to ensure that this
|
||||
trait "just works". You may also test to see if the necessary __intrinsics are available
|
||||
by checking to see if the macro `BOOST_HAS_TRIVIAL_CONSTRUCTOR` is defined.
|
||||
|
||||
|
||||
__std_ref 12.1p6.
|
||||
|
||||
|
@ -27,9 +27,12 @@ templates, then this template can not be used with function types.
|
||||
|
||||
Without some (as yet unspecified) help from the compiler,
|
||||
has_trivial_copy will never report that a user-defined class or struct has a
|
||||
trivial constructor; this is always safe, if possibly sub-optimal. Currently
|
||||
(May 2005) only MWCW 9 and Visual C++ 8 have the necessary compiler __intrinsics to detect
|
||||
user-defined classes with trivial constructors.
|
||||
trivial constructor; this is always safe, if possibly sub-optimal.
|
||||
Currently (May 2011) compilers more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0,
|
||||
Intel-11.0, and Codegear have the necessary compiler __intrinsics to ensure that this
|
||||
trait "just works". You may also test to see if the necessary __intrinsics are available
|
||||
by checking to see if the macro `BOOST_HAS_TRIVIAL_COPY` is defined.
|
||||
|
||||
|
||||
__std_ref 12.8p6.
|
||||
|
||||
|
@ -23,9 +23,12 @@ templates, then this template can not be used with function types.
|
||||
|
||||
Without some (as yet unspecified) help from the compiler,
|
||||
has_trivial_destructor will never report that a user-defined class or struct has a
|
||||
trivial destructor; this is always safe, if possibly sub-optimal. Currently
|
||||
(May 2005) only MWCW 9 and Visual C++ 8 have the necessary compiler __intrinsics to detect
|
||||
user-defined classes with trivial constructors.
|
||||
trivial destructor; this is always safe, if possibly sub-optimal.
|
||||
Currently (May 2011) compilers more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0,
|
||||
Intel-11.0, and Codegear have the necessary compiler __intrinsics to ensure that this
|
||||
trait "just works". You may also test to see if the necessary __intrinsics are available
|
||||
by checking to see if the macro `BOOST_HAS_TRIVIAL_DESTRUCTOR` is defined.
|
||||
|
||||
|
||||
__std_ref 12.4p3.
|
||||
|
||||
|
@ -17,8 +17,12 @@ Technical Report on C++ Library Extensions. However, there is currently no
|
||||
way to portably implement this trait. The default version provided
|
||||
always inherits from __false_type, and has to be explicitly specialized for
|
||||
types with virtual destructors unless the compiler used has compiler __intrinsics
|
||||
that enable the trait to do the right thing: currently (May 2005) only Visual C++
|
||||
8 and GCC-4.3 have the necessary __intrinsics.
|
||||
that enable the trait to do the right thing:
|
||||
Currently (May 2011) compilers more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0,
|
||||
Intel-11.0, and Codegear have the necessary compiler __intrinsics to ensure that this
|
||||
trait "just works". You may also test to see if the necessary __intrinsics are available
|
||||
by checking to see if the macro `BOOST_HAS_VIRTUAL_DESTRUCTOR` is defined.
|
||||
|
||||
|
||||
__std_ref 12.4.
|
||||
|
||||
|
@ -56,7 +56,7 @@
|
||||
method available to them.
|
||||
</p>
|
||||
<a name="boost_typetraits.background.type_traits"></a><h5>
|
||||
<a name="id1004448"></a>
|
||||
<a name="id984377"></a>
|
||||
<a class="link" href="background.html#boost_typetraits.background.type_traits">Type Traits</a>
|
||||
</h5>
|
||||
<p>
|
||||
@ -84,7 +84,7 @@
|
||||
given.
|
||||
</p>
|
||||
<a name="boost_typetraits.background.implementation"></a><h5>
|
||||
<a name="id1004511"></a>
|
||||
<a name="id984441"></a>
|
||||
<a class="link" href="background.html#boost_typetraits.background.implementation">Implementation</a>
|
||||
</h5>
|
||||
<p>
|
||||
@ -174,7 +174,7 @@
|
||||
in the default template.
|
||||
</p>
|
||||
<a name="boost_typetraits.background.optimized_copy"></a><h5>
|
||||
<a name="id1012963"></a>
|
||||
<a name="id992892"></a>
|
||||
<a class="link" href="background.html#boost_typetraits.background.optimized_copy">Optimized copy</a>
|
||||
</h5>
|
||||
<p>
|
||||
@ -247,7 +247,7 @@
|
||||
otherwise it will call the "slow but safe version".
|
||||
</p>
|
||||
<a name="boost_typetraits.background.was_it_worth_it_"></a><h5>
|
||||
<a name="id1013329"></a>
|
||||
<a name="id993258"></a>
|
||||
<a class="link" href="background.html#boost_typetraits.background.was_it_worth_it_">Was it worth it?</a>
|
||||
</h5>
|
||||
<p>
|
||||
@ -379,7 +379,7 @@
|
||||
</table></div>
|
||||
</div>
|
||||
<br class="table-break"><a name="boost_typetraits.background.pair_of_references"></a><h5>
|
||||
<a name="id1013526"></a>
|
||||
<a name="id993455"></a>
|
||||
<a class="link" href="background.html#boost_typetraits.background.pair_of_references">Pair of References</a>
|
||||
</h5>
|
||||
<p>
|
||||
@ -597,7 +597,7 @@
|
||||
easier to maintain and easier to understand.
|
||||
</p>
|
||||
<a name="boost_typetraits.background.conclusion"></a><h5>
|
||||
<a name="id1014369"></a>
|
||||
<a name="id994299"></a>
|
||||
<a class="link" href="background.html#boost_typetraits.background.conclusion">Conclusion</a>
|
||||
</h5>
|
||||
<p>
|
||||
@ -610,7 +610,7 @@
|
||||
can be optimal as well as generic.
|
||||
</p>
|
||||
<a name="boost_typetraits.background.acknowledgements"></a><h5>
|
||||
<a name="id1014386"></a>
|
||||
<a name="id994316"></a>
|
||||
<a class="link" href="background.html#boost_typetraits.background.acknowledgements">Acknowledgements</a>
|
||||
</h5>
|
||||
<p>
|
||||
@ -618,7 +618,7 @@
|
||||
comments when preparing this article.
|
||||
</p>
|
||||
<a name="boost_typetraits.background._anchor_id__background_references____references"></a><h5>
|
||||
<a name="id1014403"></a>
|
||||
<a name="id994332"></a>
|
||||
<a class="link" href="background.html#boost_typetraits.background._anchor_id__background_references____references"><a name="background.references"></a> References</a>
|
||||
</h5>
|
||||
<div class="orderedlist"><ol type="1">
|
||||
|
@ -103,7 +103,7 @@
|
||||
<span class="keyword">struct</span> <a class="link" href="../reference/remove_volatile.html" title="remove_volatile">remove_volatile</a><span class="special">;</span>
|
||||
</pre>
|
||||
<a name="boost_typetraits.category.transform.broken_compiler_workarounds_"></a><h5>
|
||||
<a name="id1018464"></a>
|
||||
<a name="id998393"></a>
|
||||
<a class="link" href="transform.html#boost_typetraits.category.transform.broken_compiler_workarounds_">Broken
|
||||
Compiler Workarounds:</a>
|
||||
</h5>
|
||||
|
@ -27,7 +27,7 @@
|
||||
<a name="boost_typetraits.history"></a><a class="link" href="history.html" title="History">History</a>
|
||||
</h2></div></div></div>
|
||||
<a name="boost_typetraits.history.boost_1_47_0"></a><h5>
|
||||
<a name="id1076582"></a>
|
||||
<a name="id1055902"></a>
|
||||
<a class="link" href="history.html#boost_typetraits.history.boost_1_47_0">Boost 1.47.0</a>
|
||||
</h5>
|
||||
<div class="itemizedlist"><ul type="disc">
|
||||
@ -41,7 +41,7 @@
|
||||
</li>
|
||||
</ul></div>
|
||||
<a name="boost_typetraits.history.boost_1_45_0"></a><h5>
|
||||
<a name="id1076632"></a>
|
||||
<a name="id1055953"></a>
|
||||
<a class="link" href="history.html#boost_typetraits.history.boost_1_45_0">Boost 1.45.0</a>
|
||||
</h5>
|
||||
<div class="itemizedlist"><ul type="disc">
|
||||
@ -57,7 +57,7 @@
|
||||
</li>
|
||||
</ul></div>
|
||||
<a name="boost_typetraits.history.boost_1_44_0"></a><h5>
|
||||
<a name="id1076692"></a>
|
||||
<a name="id1056013"></a>
|
||||
<a class="link" href="history.html#boost_typetraits.history.boost_1_44_0">Boost 1.44.0</a>
|
||||
</h5>
|
||||
<div class="itemizedlist"><ul type="disc">
|
||||
@ -73,7 +73,7 @@
|
||||
</li>
|
||||
</ul></div>
|
||||
<a name="boost_typetraits.history.boost_1_42_0"></a><h5>
|
||||
<a name="id1076748"></a>
|
||||
<a name="id1056068"></a>
|
||||
<a class="link" href="history.html#boost_typetraits.history.boost_1_42_0">Boost 1.42.0</a>
|
||||
</h5>
|
||||
<div class="itemizedlist"><ul type="disc"><li>
|
||||
|
@ -73,7 +73,7 @@
|
||||
template arguments is 3.
|
||||
</p>
|
||||
<a name="boost_typetraits.reference.common_type.configuration_macros"></a><h5>
|
||||
<a name="id1032786"></a>
|
||||
<a name="id1013334"></a>
|
||||
<a class="link" href="common_type.html#boost_typetraits.reference.common_type.configuration_macros">Configuration
|
||||
macros</a>
|
||||
</h5>
|
||||
@ -103,7 +103,7 @@
|
||||
Otherwise when BOOST_COMMON_TYPE_DONT_USE_TYPEOF is not defined it uses Boost.TypeOf.
|
||||
</p>
|
||||
<a name="boost_typetraits.reference.common_type.tutorial"></a><h5>
|
||||
<a name="id1032844"></a>
|
||||
<a name="id1013392"></a>
|
||||
<a class="link" href="common_type.html#boost_typetraits.reference.common_type.tutorial">Tutorial</a>
|
||||
</h5>
|
||||
<p>
|
||||
@ -138,7 +138,7 @@
|
||||
This is a very useful and broadly applicable utility.
|
||||
</p>
|
||||
<a name="boost_typetraits.reference.common_type.how_to_get_the_common_type_of_types_with_explicit_conversions_"></a><h5>
|
||||
<a name="id1033145"></a>
|
||||
<a name="id1013693"></a>
|
||||
<a class="link" href="common_type.html#boost_typetraits.reference.common_type.how_to_get_the_common_type_of_types_with_explicit_conversions_">How
|
||||
to get the common type of types with explicit conversions?</a>
|
||||
</h5>
|
||||
@ -160,7 +160,7 @@
|
||||
<span class="special">};</span>
|
||||
</pre>
|
||||
<a name="boost_typetraits.reference.common_type.how_important_is_the_order_of_the_common_type_lt__gt__template_arguments_"></a><h5>
|
||||
<a name="id1033445"></a>
|
||||
<a name="id1013993"></a>
|
||||
<a class="link" href="common_type.html#boost_typetraits.reference.common_type.how_important_is_the_order_of_the_common_type_lt__gt__template_arguments_">How
|
||||
important is the order of the common_type<> template arguments?</a>
|
||||
</h5>
|
||||
@ -240,7 +240,7 @@
|
||||
<span class="identifier">A</span><span class="special">></span></code>.
|
||||
</p>
|
||||
<a name="boost_typetraits.reference.common_type.can_the_common_type_of_two_types_be_a_third_type_"></a><h5>
|
||||
<a name="id1034311"></a>
|
||||
<a name="id1014859"></a>
|
||||
<a class="link" href="common_type.html#boost_typetraits.reference.common_type.can_the_common_type_of_two_types_be_a_third_type_">Can
|
||||
the common_type of two types be a third type?</a>
|
||||
</h5>
|
||||
@ -267,7 +267,7 @@
|
||||
<span class="identifier">B</span><span class="special">></span></code>.
|
||||
</p>
|
||||
<a name="boost_typetraits.reference.common_type.how_common_type_behaves_with_pointers_"></a><h5>
|
||||
<a name="id1034591"></a>
|
||||
<a name="id1015139"></a>
|
||||
<a class="link" href="common_type.html#boost_typetraits.reference.common_type.how_common_type_behaves_with_pointers_">How
|
||||
common_type behaves with pointers?</a>
|
||||
</h5>
|
||||
@ -303,7 +303,7 @@
|
||||
Of course the user can always make this specialization.
|
||||
</p>
|
||||
<a name="boost_typetraits.reference.common_type.can_you_explain_the_pros_cons_of_common_type_against_boost_typeof_"></a><h5>
|
||||
<a name="id1034875"></a>
|
||||
<a name="id1015423"></a>
|
||||
<a class="link" href="common_type.html#boost_typetraits.reference.common_type.can_you_explain_the_pros_cons_of_common_type_against_boost_typeof_">Can
|
||||
you explain the pros/cons of common_type against Boost.Typeof?</a>
|
||||
</h5>
|
||||
|
@ -48,11 +48,15 @@
|
||||
can not be used with function types.
|
||||
</p>
|
||||
<p>
|
||||
Without some (as yet unspecified) help from the compiler, <code class="computeroutput"><span class="identifier">has_nothrow_constructor</span></code>
|
||||
Without some (unspecified) help from the compiler, <code class="computeroutput"><span class="identifier">has_nothrow_constructor</span></code>
|
||||
will never report that a class or struct has a non-throwing default-constructor;
|
||||
this is always safe, if possibly sub-optimal. Currently (May 2005) only Visual
|
||||
C++ 8 has the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to ensure that this trait "just works".
|
||||
this is always safe, if possibly sub-optimal. Currently (May 2011) compilers
|
||||
more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear
|
||||
have the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to ensure that this trait "just works". You may also test to see
|
||||
if the necessary <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
are available by checking to see if the macro <code class="computeroutput"><span class="identifier">BOOST_HAS_NOTHROW_CONSTRUCTOR</span></code>
|
||||
is defined.
|
||||
</p>
|
||||
<p>
|
||||
<span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
|
||||
|
@ -50,9 +50,13 @@
|
||||
<p>
|
||||
Without some (as yet unspecified) help from the compiler, <code class="computeroutput"><span class="identifier">has_nothrow_copy</span></code>
|
||||
will never report that a class or struct has a non-throwing copy-constructor;
|
||||
this is always safe, if possibly sub-optimal. Currently (May 2005) only Visual
|
||||
C++ 8 has the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to ensure that this trait "just works".
|
||||
this is always safe, if possibly sub-optimal. Currently (May 2011) compilers
|
||||
more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear
|
||||
have the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to ensure that this trait "just works". You may also test to see
|
||||
if the necessary <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
are available by checking to see if the macro <code class="computeroutput"><span class="identifier">BOOST_HAS_NOTHROW_COPY</span></code>
|
||||
is defined.
|
||||
</p>
|
||||
<p>
|
||||
<span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
|
||||
|
@ -47,9 +47,13 @@
|
||||
<p>
|
||||
Without some (as yet unspecified) help from the compiler, has_trivial_assign
|
||||
will never report that a user-defined class or struct has a trivial constructor;
|
||||
this is always safe, if possibly sub-optimal. Currently (May 2005) only MWCW
|
||||
9 and Visual C++ 8 have the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to detect user-defined classes with trivial constructors.
|
||||
this is always safe, if possibly sub-optimal. Currently (May 2011) compilers
|
||||
more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear
|
||||
have the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to ensure that this trait "just works". You may also test to see
|
||||
if the necessary <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
are available by checking to see if the macro <code class="computeroutput"><span class="identifier">BOOST_HAS_TRIVIAL_ASSIGN</span></code>
|
||||
is defined.
|
||||
</p>
|
||||
<p>
|
||||
<span class="bold"><strong>C++ Standard Reference:</strong></span> 12.8p11.
|
||||
|
@ -55,9 +55,13 @@
|
||||
<p>
|
||||
Without some (as yet unspecified) help from the compiler, has_trivial_constructor
|
||||
will never report that a user-defined class or struct has a trivial constructor;
|
||||
this is always safe, if possibly sub-optimal. Currently (May 2005) only MWCW
|
||||
9 and Visual C++ 8 have the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to detect user-defined classes with trivial constructors.
|
||||
this is always safe, if possibly sub-optimal. Currently (May 2011) compilers
|
||||
more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear
|
||||
have the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to ensure that this trait "just works". You may also test to see
|
||||
if the necessary <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
are available by checking to see if the macro <code class="computeroutput"><span class="identifier">BOOST_HAS_TRIVIAL_CONSTRUCTOR</span></code>
|
||||
is defined.
|
||||
</p>
|
||||
<p>
|
||||
<span class="bold"><strong>C++ Standard Reference:</strong></span> 12.1p6.
|
||||
|
@ -53,9 +53,13 @@
|
||||
<p>
|
||||
Without some (as yet unspecified) help from the compiler, has_trivial_copy
|
||||
will never report that a user-defined class or struct has a trivial constructor;
|
||||
this is always safe, if possibly sub-optimal. Currently (May 2005) only MWCW
|
||||
9 and Visual C++ 8 have the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to detect user-defined classes with trivial constructors.
|
||||
this is always safe, if possibly sub-optimal. Currently (May 2011) compilers
|
||||
more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear
|
||||
have the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to ensure that this trait "just works". You may also test to see
|
||||
if the necessary <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
are available by checking to see if the macro <code class="computeroutput"><span class="identifier">BOOST_HAS_TRIVIAL_COPY</span></code>
|
||||
is defined.
|
||||
</p>
|
||||
<p>
|
||||
<span class="bold"><strong>C++ Standard Reference:</strong></span> 12.8p6.
|
||||
|
@ -49,9 +49,13 @@
|
||||
<p>
|
||||
Without some (as yet unspecified) help from the compiler, has_trivial_destructor
|
||||
will never report that a user-defined class or struct has a trivial destructor;
|
||||
this is always safe, if possibly sub-optimal. Currently (May 2005) only MWCW
|
||||
9 and Visual C++ 8 have the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to detect user-defined classes with trivial constructors.
|
||||
this is always safe, if possibly sub-optimal. Currently (May 2011) compilers
|
||||
more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear
|
||||
have the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to ensure that this trait "just works". You may also test to see
|
||||
if the necessary <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
are available by checking to see if the macro <code class="computeroutput"><span class="identifier">BOOST_HAS_TRIVIAL_DESTRUCTOR</span></code>
|
||||
is defined.
|
||||
</p>
|
||||
<p>
|
||||
<span class="bold"><strong>C++ Standard Reference:</strong></span> 12.4p3.
|
||||
|
@ -41,8 +41,13 @@
|
||||
trait. The default version provided always inherits from <a class="link" href="integral_constant.html" title="integral_constant">false_type</a>,
|
||||
and has to be explicitly specialized for types with virtual destructors unless
|
||||
the compiler used has compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
that enable the trait to do the right thing: currently (May 2005) only Visual
|
||||
C++ 8 and GCC-4.3 have the necessary <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>.
|
||||
that enable the trait to do the right thing: Currently (May 2011) compilers
|
||||
more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear
|
||||
have the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to ensure that this trait "just works". You may also test to see
|
||||
if the necessary <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
are available by checking to see if the macro <code class="computeroutput"><span class="identifier">BOOST_HAS_VIRTUAL_DESTRUCTOR</span></code>
|
||||
is defined.
|
||||
</p>
|
||||
<p>
|
||||
<span class="bold"><strong>C++ Standard Reference:</strong></span> 12.4.
|
||||
|
@ -47,8 +47,12 @@
|
||||
yet unspecified) help from the compiler, we cannot distinguish between union
|
||||
and class types, as a result this type will erroneously inherit from <a class="link" href="integral_constant.html" title="integral_constant">true_type</a> for
|
||||
union types. See also <a class="link" href="is_union.html" title="is_union">is_union</a>.
|
||||
Currently (May 2005) only Visual C++ 8 has the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to correctly identify union types, and therefore make is_class function correctly.
|
||||
Currently (May 2011) compilers more recent than Visual C++ 8, GCC-4.3, Greenhills
|
||||
6.0, Intel-11.0, and Codegear have the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to ensure that this trait "just works". You may also test to see
|
||||
if the necessary <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
are available by checking to see if the macro <code class="computeroutput"><span class="identifier">BOOST_IS_CLASS</span></code>
|
||||
is defined.
|
||||
</p>
|
||||
<p>
|
||||
<span class="bold"><strong>Examples:</strong></span>
|
||||
|
@ -52,7 +52,8 @@
|
||||
</li>
|
||||
<li>
|
||||
the compiler providing <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to detect empty classes.
|
||||
to detect empty classes - this latter case can be tested for by checking
|
||||
to see if the macro BOOST_IS_EMPTY is defined.
|
||||
</li>
|
||||
</ul></div>
|
||||
<p>
|
||||
|
@ -53,10 +53,15 @@
|
||||
can not be used with function types.
|
||||
</p>
|
||||
<p>
|
||||
Without some (as yet unspecified) help from the compiler, is<span class="underline">pod
|
||||
will never report that a class or struct is a POD; this is always safe, if
|
||||
possibly sub-optimal. Currently (May 2005) only MWCW 9 and Visual C++ 8 have
|
||||
the necessary compiler-</span>_intrinsics.
|
||||
Without some (as yet unspecified) help from the compiler, is_pod will never
|
||||
report that a class or struct is a POD; this is always safe, if possibly
|
||||
sub-optimal. Currently (May 2011) compilers more recent than Visual C++ 8,
|
||||
GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear have the necessary compiler
|
||||
<a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a> to ensure that
|
||||
this trait "just works". You may also test to see if the necessary
|
||||
<a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a> are available
|
||||
by checking to see if the macro <code class="computeroutput"><span class="identifier">BOOST_IS_POD</span></code>
|
||||
is defined.
|
||||
</p>
|
||||
<p>
|
||||
<span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
|
||||
|
@ -65,9 +65,10 @@
|
||||
<p>
|
||||
Without some (as yet unspecified) help from the compiler, is_stateless will
|
||||
never report that a class or struct is stateless; this is always safe, if
|
||||
possibly sub-optimal. Currently (May 2005) only MWCW 9 and Visual C++ 8 have
|
||||
the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to make this template work automatically.
|
||||
possibly sub-optimal. Currently (May 2011) compilers more recent than Visual
|
||||
C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear have the necessary
|
||||
compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a> to
|
||||
ensure that this trait "just works".
|
||||
</p>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
|
@ -46,9 +46,13 @@
|
||||
inherit from <a class="link" href="integral_constant.html" title="integral_constant">true_type</a>,
|
||||
unless the user explicitly specializes the template for their user-defined
|
||||
union types, or unless the compiler supplies some unspecified intrinsic that
|
||||
implements this functionality. Currently (May 2005) only Visual C++ 8 has
|
||||
implements this functionality. Currently (May 2011) compilers more recent
|
||||
than Visual C++ 8, GCC-4.3, Greenhills 6.0, Intel-11.0, and Codegear have
|
||||
the necessary compiler <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
to make this trait "just work" without user intervention.
|
||||
to ensure that this trait "just works". You may also test to see
|
||||
if the necessary <a class="link" href="../intrinsics.html" title="Support for Compiler Intrinsics">intrinsics</a>
|
||||
are available by checking to see if the macro <code class="computeroutput"><span class="identifier">BOOST_IS_UNION</span></code>
|
||||
is defined.
|
||||
</p>
|
||||
<p>
|
||||
<span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
|
||||
|
@ -30,7 +30,7 @@
|
||||
Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
|
||||
Ramey and Jeremy Siek</p></div>
|
||||
<div><div class="legalnotice">
|
||||
<a name="id1004299"></a><p>
|
||||
<a name="id984228"></a><p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
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>)
|
||||
</p>
|
||||
|
@ -24,7 +24,7 @@
|
||||
</div>
|
||||
<div class="section" lang="en">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="id1076845"></a>Class Index</h2></div></div></div>
|
||||
<a name="id1056165"></a>Class Index</h2></div></div></div>
|
||||
<p><a class="link" href="s11.html#idx_id_0">A</a> <a class="link" href="s11.html#idx_id_1">C</a> <a class="link" href="s11.html#idx_id_2">D</a> <a class="link" href="s11.html#idx_id_3">E</a> <a class="link" href="s11.html#idx_id_4">F</a> <a class="link" href="s11.html#idx_id_5">H</a> <a class="link" href="s11.html#idx_id_6">I</a> <a class="link" href="s11.html#idx_id_7">M</a> <a class="link" href="s11.html#idx_id_8">P</a> <a class="link" href="s11.html#idx_id_9">R</a> <a class="link" href="s11.html#idx_id_10">T</a> </p>
|
||||
<div class="variablelist"><dl>
|
||||
<dt>
|
||||
|
@ -24,7 +24,7 @@
|
||||
</div>
|
||||
<div class="section" lang="en">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="id1078186"></a>Typedef Index</h2></div></div></div>
|
||||
<a name="id1059002"></a>Typedef Index</h2></div></div></div>
|
||||
<p><a class="link" href="s12.html#idx_id_11">F</a> <a class="link" href="s12.html#idx_id_12">R</a> <a class="link" href="s12.html#idx_id_13">T</a> </p>
|
||||
<div class="variablelist"><dl>
|
||||
<dt>
|
||||
|
@ -24,7 +24,7 @@
|
||||
</div>
|
||||
<div class="section" lang="en">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="id1078271"></a>Macro Index</h2></div></div></div>
|
||||
<a name="id1059087"></a>Macro Index</h2></div></div></div>
|
||||
<p><a class="link" href="s13.html#idx_id_14">B</a> </p>
|
||||
<div class="variablelist"><dl>
|
||||
<dt>
|
||||
@ -40,37 +40,70 @@
|
||||
<dt><span class="term">BOOST_HAS_NOTHROW_ASSIGN</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">BOOST_HAS_NOTHROW_CONSTRUCTOR</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_nothrow_constructor.html" title="has_nothrow_constructor">has_nothrow_constructor</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_HAS_NOTHROW_COPY</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_nothrow_copy.html" title="has_nothrow_copy">has_nothrow_copy</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_HAS_TRIVIAL_ASSIGN</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_assign.html" title="has_trivial_assign">has_trivial_assign</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_HAS_TRIVIAL_CONSTRUCTOR</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_constructor.html" title="has_trivial_constructor">has_trivial_constructor</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_HAS_TRIVIAL_COPY</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_copy.html" title="has_trivial_copy">has_trivial_copy</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_HAS_TRIVIAL_DESTRUCTOR</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_destructor.html" title="has_trivial_destructor">has_trivial_destructor</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_HAS_VIRTUAL_DESTRUCTOR</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_virtual_destructor.html" title="has_virtual_destructor">has_virtual_destructor</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_IS_ABSTRACT</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">BOOST_IS_BASE_OF</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">BOOST_IS_CLASS</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_class.html" title="is_class">is_class</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_IS_CONVERTIBLE</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">BOOST_IS_EMPTY</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_empty.html" title="is_empty">is_empty</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_IS_ENUM</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">BOOST_IS_POD</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_pod.html" title="is_pod">is_pod</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_IS_POLYMORPHIC</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">BOOST_IS_UNION</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_union.html" title="is_union">is_union</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
</dl></div></dd>
|
||||
</dl></div>
|
||||
</div>
|
||||
|
@ -23,7 +23,7 @@
|
||||
</div>
|
||||
<div class="section" lang="en">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="id1078600"></a>Index</h2></div></div></div>
|
||||
<a name="id1059482"></a>Index</h2></div></div></div>
|
||||
<p><a class="link" href="s14.html#idx_id_15">A</a> <a class="link" href="s14.html#idx_id_16">B</a> <a class="link" href="s14.html#idx_id_17">C</a> <a class="link" href="s14.html#idx_id_18">D</a> <a class="link" href="s14.html#idx_id_19">E</a> <a class="link" href="s14.html#idx_id_20">F</a> <a class="link" href="s14.html#idx_id_21">H</a> <a class="link" href="s14.html#idx_id_22">I</a> <a class="link" href="s14.html#idx_id_23">M</a> <a class="link" href="s14.html#idx_id_24">P</a> <a class="link" href="s14.html#idx_id_25">R</a> <a class="link" href="s14.html#idx_id_26">S</a> <a class="link" href="s14.html#idx_id_27">T</a> <a class="link" href="s14.html#idx_id_28">U</a> </p>
|
||||
<div class="variablelist"><dl>
|
||||
<dt>
|
||||
@ -71,37 +71,70 @@
|
||||
<dt><span class="term">BOOST_HAS_NOTHROW_ASSIGN</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">BOOST_HAS_NOTHROW_CONSTRUCTOR</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_nothrow_constructor.html" title="has_nothrow_constructor">has_nothrow_constructor</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_HAS_NOTHROW_COPY</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_nothrow_copy.html" title="has_nothrow_copy">has_nothrow_copy</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_HAS_TRIVIAL_ASSIGN</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_assign.html" title="has_trivial_assign">has_trivial_assign</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_HAS_TRIVIAL_CONSTRUCTOR</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_constructor.html" title="has_trivial_constructor">has_trivial_constructor</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_HAS_TRIVIAL_COPY</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_copy.html" title="has_trivial_copy">has_trivial_copy</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_HAS_TRIVIAL_DESTRUCTOR</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_destructor.html" title="has_trivial_destructor">has_trivial_destructor</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_HAS_VIRTUAL_DESTRUCTOR</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_virtual_destructor.html" title="has_virtual_destructor">has_virtual_destructor</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_IS_ABSTRACT</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">BOOST_IS_BASE_OF</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">BOOST_IS_CLASS</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_class.html" title="is_class">is_class</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_IS_CONVERTIBLE</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">BOOST_IS_EMPTY</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_empty.html" title="is_empty">is_empty</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_IS_ENUM</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">BOOST_IS_POD</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_pod.html" title="is_pod">is_pod</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">BOOST_IS_POLYMORPHIC</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">BOOST_IS_UNION</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_union.html" title="is_union">is_union</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/intrinsics.html#boost_typetraits.intrinsics.macros_for_compiler_intrinsics" title="Table 1.4. Macros for Compiler Intrinsics">Support for Compiler Intrinsics</a></p></td></tr>
|
||||
</table></dd>
|
||||
</dl></div></dd>
|
||||
<dt>
|
||||
<a name="idx_id_17"></a><span class="term">C</span>
|
||||
@ -155,11 +188,13 @@
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/reference/has_nothrow_assign.html" title="has_nothrow_assign">has_nothrow_assign</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">has_nothrow_constructor</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_nothrow_constructor.html" title="has_nothrow_constructor">BOOST_HAS_NOTHROW_CONSTRUCTOR</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_nothrow_constructor.html" title="has_nothrow_constructor">has_nothrow_constructor</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_nothrow_constructor.html" title="has_nothrow_constructor">has_nothrow_default_constructor</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">has_nothrow_copy</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_nothrow_copy.html" title="has_nothrow_copy">BOOST_HAS_NOTHROW_COPY</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_nothrow_copy.html" title="has_nothrow_copy">has_nothrow_copy</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_nothrow_copy.html" title="has_nothrow_copy">has_nothrow_copy_constructor</a></p></td></tr>
|
||||
</table></dd>
|
||||
@ -168,14 +203,19 @@
|
||||
<dt><span class="term">has_nothrow_default_constructor</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/reference/has_nothrow_constructor.html" title="has_nothrow_constructor">has_nothrow_constructor</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">has_trivial_assign</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_assign.html" title="has_trivial_assign">has_trivial_assign</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_assign.html" title="has_trivial_assign">BOOST_HAS_TRIVIAL_ASSIGN</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_assign.html" title="has_trivial_assign">has_trivial_assign</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">has_trivial_constructor</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_constructor.html" title="has_trivial_constructor">BOOST_HAS_TRIVIAL_CONSTRUCTOR</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_constructor.html" title="has_trivial_constructor">has_trivial_constructor</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_constructor.html" title="has_trivial_constructor">has_trivial_default_constructor</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">has_trivial_copy</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_copy.html" title="has_trivial_copy">BOOST_HAS_TRIVIAL_COPY</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_copy.html" title="has_trivial_copy">has_trivial_copy</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_copy.html" title="has_trivial_copy">has_trivial_copy_constructor</a></p></td></tr>
|
||||
</table></dd>
|
||||
@ -184,9 +224,15 @@
|
||||
<dt><span class="term">has_trivial_default_constructor</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_constructor.html" title="has_trivial_constructor">has_trivial_constructor</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">has_trivial_destructor</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_destructor.html" title="has_trivial_destructor">has_trivial_destructor</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_destructor.html" title="has_trivial_destructor">BOOST_HAS_TRIVIAL_DESTRUCTOR</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_trivial_destructor.html" title="has_trivial_destructor">has_trivial_destructor</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">has_virtual_destructor</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/reference/has_virtual_destructor.html" title="has_virtual_destructor">has_virtual_destructor</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_virtual_destructor.html" title="has_virtual_destructor">BOOST_HAS_VIRTUAL_DESTRUCTOR</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/has_virtual_destructor.html" title="has_virtual_destructor">has_virtual_destructor</a></p></td></tr>
|
||||
</table></dd>
|
||||
</dl></div></dd>
|
||||
<dt>
|
||||
<a name="idx_id_22"></a><span class="term">I</span>
|
||||
@ -217,6 +263,7 @@
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/reference/is_base_of.html" title="is_base_of">is_base_of</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">is_class</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_class.html" title="is_class">BOOST_IS_CLASS</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_class.html" title="is_class">is_class</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/user_defined.html" title="User Defined Specializations">User Defined Specializations</a></p></td></tr>
|
||||
</table></dd>
|
||||
@ -229,7 +276,10 @@
|
||||
<dt><span class="term">is_convertible</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/reference/is_convertible.html" title="is_convertible">is_convertible</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">is_empty</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/reference/is_empty.html" title="is_empty">is_empty</a></p></td></tr></table></dd>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_empty.html" title="is_empty">BOOST_IS_EMPTY</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_empty.html" title="is_empty">is_empty</a></p></td></tr>
|
||||
</table></dd>
|
||||
<dt><span class="term">is_enum</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/reference/is_enum.html" title="is_enum">is_enum</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">is_floating_point</span></dt>
|
||||
@ -255,6 +305,7 @@
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/reference/is_object.html" title="is_object">is_object</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">is_pod</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_pod.html" title="is_pod">BOOST_IS_POD</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_pod.html" title="is_pod">is_pod</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/user_defined.html" title="User Defined Specializations">User Defined Specializations</a></p></td></tr>
|
||||
</table></dd>
|
||||
@ -279,6 +330,7 @@
|
||||
<dd><table class="simplelist" border="0" summary="Simple list"><tr><td><p><a class="link" href="../boost_typetraits/reference/is_stateless.html" title="is_stateless">is_stateless</a></p></td></tr></table></dd>
|
||||
<dt><span class="term">is_union</span></dt>
|
||||
<dd><table class="simplelist" border="0" summary="Simple list">
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_union.html" title="is_union">BOOST_IS_UNION</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/reference/is_union.html" title="is_union">is_union</a></p></td></tr>
|
||||
<tr><td><p><a class="link" href="../boost_typetraits/user_defined.html" title="User Defined Specializations">User Defined Specializations</a></p></td></tr>
|
||||
</table></dd>
|
||||
|
@ -19,8 +19,10 @@ __header ` #include <boost/type_traits/is_class.hpp>` or ` #include <boost/type_
|
||||
__compat Without (some as yet unspecified) help from the compiler,
|
||||
we cannot distinguish between union and class types, as a result this type
|
||||
will erroneously inherit from __true_type for union types. See also __is_union.
|
||||
Currently (May 2005) only Visual C++ 8 has the necessary compiler __intrinsics to
|
||||
correctly identify union types, and therefore make is_class function correctly.
|
||||
Currently (May 2011) compilers more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0,
|
||||
Intel-11.0, and Codegear have the necessary compiler __intrinsics to ensure that this
|
||||
trait "just works". You may also test to see if the necessary __intrinsics are available
|
||||
by checking to see if the macro `BOOST_IS_CLASS` is defined.
|
||||
|
||||
__examples
|
||||
|
||||
|
@ -19,7 +19,8 @@ __header ` #include <boost/type_traits/is_empty.hpp>` or ` #include <boost/type_
|
||||
__compat In order to correctly detect empty classes this trait relies on either:
|
||||
|
||||
* the compiler implementing zero sized empty base classes, or
|
||||
* the compiler providing __intrinsics to detect empty classes.
|
||||
* the compiler providing __intrinsics to detect empty classes - this latter case can be tested for
|
||||
by checking to see if the macro BOOST_IS_EMPTY is defined.
|
||||
|
||||
Can not be used with incomplete types.
|
||||
|
||||
|
@ -28,8 +28,12 @@ of class templates, then this template can not be used with function types.
|
||||
|
||||
Without some (as yet unspecified) help from the compiler, is_pod will
|
||||
never report that a class or struct is a POD; this is always safe,
|
||||
if possibly sub-optimal. Currently (May 2005) only MWCW 9 and Visual C++ 8 have the
|
||||
necessary compiler-__intrinsics.
|
||||
if possibly sub-optimal.
|
||||
Currently (May 2011) compilers more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0,
|
||||
Intel-11.0, and Codegear have the necessary compiler __intrinsics to ensure that this
|
||||
trait "just works". You may also test to see if the necessary __intrinsics are available
|
||||
by checking to see if the macro `BOOST_IS_POD` is defined.
|
||||
|
||||
|
||||
__header ` #include <boost/type_traits/is_pod.hpp>` or ` #include <boost/type_traits.hpp>`
|
||||
|
||||
|
@ -33,8 +33,10 @@ then this template can not be used with function types.
|
||||
|
||||
Without some (as yet unspecified) help from the compiler, is_stateless will never
|
||||
report that a class or struct is stateless; this is always safe,
|
||||
if possibly sub-optimal. Currently (May 2005) only MWCW 9 and Visual C++ 8 have the necessary
|
||||
compiler __intrinsics to make this template work automatically.
|
||||
if possibly sub-optimal.
|
||||
Currently (May 2011) compilers more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0,
|
||||
Intel-11.0, and Codegear have the necessary compiler __intrinsics to ensure that this
|
||||
trait "just works".
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@ -19,9 +19,12 @@ __compat Without (some as yet unspecified) help from the
|
||||
compiler, we cannot distinguish between union and class types using only standard C++,
|
||||
as a result this type will never inherit from __true_type, unless the user explicitly
|
||||
specializes the template for their user-defined union types, or unless the compiler
|
||||
supplies some unspecified intrinsic that implements this functionality. Currently
|
||||
(May 2005) only Visual C++ 8 has the necessary compiler __intrinsics to make this
|
||||
trait "just work" without user intervention.
|
||||
supplies some unspecified intrinsic that implements this functionality.
|
||||
Currently (May 2011) compilers more recent than Visual C++ 8, GCC-4.3, Greenhills 6.0,
|
||||
Intel-11.0, and Codegear have the necessary compiler __intrinsics to ensure that this
|
||||
trait "just works". You may also test to see if the necessary __intrinsics are available
|
||||
by checking to see if the macro `BOOST_IS_UNION` is defined.
|
||||
|
||||
|
||||
__header ` #include <boost/type_traits/is_union.hpp>` or ` #include <boost/type_traits.hpp>`
|
||||
|
||||
|
@ -20,16 +20,22 @@ namespace detail{
|
||||
|
||||
template <class T>
|
||||
struct has_nothrow_assign_imp{
|
||||
BOOST_STATIC_CONSTANT(bool, value =
|
||||
(::boost::type_traits::ice_or<
|
||||
::boost::has_trivial_assign<T>::value,
|
||||
BOOST_HAS_NOTHROW_ASSIGN(T)
|
||||
>::value));
|
||||
#ifndef BOOST_HAS_NOTHROW_ASSIGN
|
||||
BOOST_STATIC_CONSTANT(bool, value = ::boost::has_trivial_assign<T>::value);
|
||||
#else
|
||||
BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_NOTHROW_ASSIGN(T));
|
||||
#endif
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_assign,T,::boost::detail::has_nothrow_assign_imp<T>::value)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_assign,void,false)
|
||||
#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_assign,void const,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_assign,void const volatile,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_assign,void volatile,false)
|
||||
#endif
|
||||
|
||||
} // namespace boost
|
||||
|
||||
|
@ -20,11 +20,11 @@ namespace detail{
|
||||
|
||||
template <class T>
|
||||
struct has_nothrow_constructor_imp{
|
||||
BOOST_STATIC_CONSTANT(bool, value =
|
||||
(::boost::type_traits::ice_or<
|
||||
::boost::has_trivial_constructor<T>::value,
|
||||
BOOST_HAS_NOTHROW_CONSTRUCTOR(T)
|
||||
>::value));
|
||||
#ifdef BOOST_HAS_NOTHROW_CONSTRUCTOR
|
||||
BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_NOTHROW_CONSTRUCTOR(T));
|
||||
#else
|
||||
BOOST_STATIC_CONSTANT(bool, value = ::boost::has_trivial_constructor<T>::value);
|
||||
#endif
|
||||
};
|
||||
|
||||
}
|
||||
@ -32,6 +32,20 @@ struct has_nothrow_constructor_imp{
|
||||
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_constructor,T,::boost::detail::has_nothrow_constructor_imp<T>::value)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_default_constructor,T,::boost::detail::has_nothrow_constructor_imp<T>::value)
|
||||
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_constructor,void,false)
|
||||
#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_constructor,void const,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_constructor,void const volatile,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_constructor,void volatile,false)
|
||||
#endif
|
||||
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_default_constructor,void,false)
|
||||
#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_default_constructor,void const,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_default_constructor,void const volatile,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_default_constructor,void volatile,false)
|
||||
#endif
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#include <boost/type_traits/detail/bool_trait_undef.hpp>
|
||||
|
@ -20,11 +20,11 @@ namespace detail{
|
||||
|
||||
template <class T>
|
||||
struct has_nothrow_copy_imp{
|
||||
BOOST_STATIC_CONSTANT(bool, value =
|
||||
(::boost::type_traits::ice_or<
|
||||
::boost::has_trivial_copy<T>::value,
|
||||
BOOST_HAS_NOTHROW_COPY(T)
|
||||
>::value));
|
||||
#ifdef BOOST_HAS_NOTHROW_COPY
|
||||
BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_NOTHROW_COPY(T));
|
||||
#else
|
||||
BOOST_STATIC_CONSTANT(bool, value = ::boost::has_trivial_copy<T>::value);
|
||||
#endif
|
||||
};
|
||||
|
||||
}
|
||||
@ -32,6 +32,20 @@ struct has_nothrow_copy_imp{
|
||||
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_copy,T,::boost::detail::has_nothrow_copy_imp<T>::value)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_copy_constructor,T,::boost::detail::has_nothrow_copy_imp<T>::value)
|
||||
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy,void,false)
|
||||
#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy,void const,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy,void const volatile,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy,void volatile,false)
|
||||
#endif
|
||||
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy_constructor,void,false)
|
||||
#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy_constructor,void const,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy_constructor,void const volatile,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy_constructor,void volatile,false)
|
||||
#endif
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#include <boost/type_traits/detail/bool_trait_undef.hpp>
|
||||
|
@ -28,20 +28,27 @@ namespace detail {
|
||||
template <typename T>
|
||||
struct has_trivial_assign_impl
|
||||
{
|
||||
#ifdef BOOST_HAS_TRIVIAL_ASSIGN
|
||||
BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_TRIVIAL_ASSIGN(T));
|
||||
#else
|
||||
BOOST_STATIC_CONSTANT(bool, value =
|
||||
(::boost::type_traits::ice_and<
|
||||
::boost::type_traits::ice_or<
|
||||
::boost::is_pod<T>::value,
|
||||
BOOST_HAS_TRIVIAL_ASSIGN(T)
|
||||
>::value,
|
||||
::boost::type_traits::ice_not< ::boost::is_const<T>::value >::value,
|
||||
::boost::is_pod<T>::value,
|
||||
::boost::type_traits::ice_not< ::boost::is_const<T>::value >::value,
|
||||
::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
|
||||
>::value));
|
||||
#endif
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_assign,T,::boost::detail::has_trivial_assign_impl<T>::value)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_assign,void,false)
|
||||
#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_assign,void const,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_assign,void const volatile,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_assign,void volatile,false)
|
||||
#endif
|
||||
|
||||
} // namespace boost
|
||||
|
||||
|
@ -24,11 +24,19 @@ namespace detail {
|
||||
template <typename T>
|
||||
struct has_trivial_ctor_impl
|
||||
{
|
||||
#ifdef BOOST_HAS_TRIVIAL_CONSTRUCTOR
|
||||
BOOST_STATIC_CONSTANT(bool, value =
|
||||
(::boost::type_traits::ice_or<
|
||||
::boost::is_pod<T>::value,
|
||||
BOOST_HAS_TRIVIAL_CONSTRUCTOR(T)
|
||||
>::value));
|
||||
#else
|
||||
BOOST_STATIC_CONSTANT(bool, value =
|
||||
(::boost::type_traits::ice_or<
|
||||
::boost::is_pod<T>::value,
|
||||
false
|
||||
>::value));
|
||||
#endif
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
@ -27,14 +27,15 @@ namespace detail {
|
||||
template <typename T>
|
||||
struct has_trivial_copy_impl
|
||||
{
|
||||
#ifdef BOOST_HAS_TRIVIAL_COPY
|
||||
BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_TRIVIAL_COPY(T));
|
||||
#else
|
||||
BOOST_STATIC_CONSTANT(bool, value =
|
||||
(::boost::type_traits::ice_and<
|
||||
::boost::type_traits::ice_or<
|
||||
::boost::is_pod<T>::value,
|
||||
BOOST_HAS_TRIVIAL_COPY(T)
|
||||
>::value,
|
||||
::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
|
||||
::boost::is_pod<T>::value,
|
||||
::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
|
||||
>::value));
|
||||
#endif
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
@ -42,6 +43,20 @@ struct has_trivial_copy_impl
|
||||
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_copy,T,::boost::detail::has_trivial_copy_impl<T>::value)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_copy_constructor,T,::boost::detail::has_trivial_copy_impl<T>::value)
|
||||
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy,void,false)
|
||||
#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy,void const,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy,void const volatile,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy,void volatile,false)
|
||||
#endif
|
||||
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy_constructor,void,false)
|
||||
#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy_constructor,void const,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy_constructor,void const volatile,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy_constructor,void volatile,false)
|
||||
#endif
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#include <boost/type_traits/detail/bool_trait_undef.hpp>
|
||||
|
@ -24,17 +24,24 @@ namespace detail {
|
||||
template <typename T>
|
||||
struct has_trivial_dtor_impl
|
||||
{
|
||||
BOOST_STATIC_CONSTANT(bool, value =
|
||||
(::boost::type_traits::ice_or<
|
||||
::boost::is_pod<T>::value,
|
||||
BOOST_HAS_TRIVIAL_DESTRUCTOR(T)
|
||||
>::value));
|
||||
#ifdef BOOST_HAS_TRIVIAL_DESTRUCTOR
|
||||
BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_TRIVIAL_DESTRUCTOR(T));
|
||||
#else
|
||||
BOOST_STATIC_CONSTANT(bool, value = ::boost::is_pod<T>::value);
|
||||
#endif
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_destructor,T,::boost::detail::has_trivial_dtor_impl<T>::value)
|
||||
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_destructor,void,false)
|
||||
#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_destructor,void const,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_destructor,void const volatile,false)
|
||||
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_destructor,void volatile,false)
|
||||
#endif
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#include <boost/type_traits/detail/bool_trait_undef.hpp>
|
||||
|
4
include/boost/type_traits/has_virtual_destructor.hpp
Executable file → Normal file
4
include/boost/type_traits/has_virtual_destructor.hpp
Executable file → Normal file
@ -16,7 +16,11 @@
|
||||
|
||||
namespace boost {
|
||||
|
||||
#ifdef BOOST_HAS_VIRTUAL_DESTRUCTOR
|
||||
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_virtual_destructor,T,BOOST_HAS_VIRTUAL_DESTRUCTOR(T))
|
||||
#else
|
||||
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_virtual_destructor,T,false)
|
||||
#endif
|
||||
|
||||
} // namespace boost
|
||||
|
||||
|
@ -33,8 +33,6 @@
|
||||
// BOOST_HAS_VIRTUAL_DESTRUCTOR(T) should evaluate to true T has a virtual destructor
|
||||
//
|
||||
// The following can also be defined: when detected our implementation is greatly simplified.
|
||||
// Note that unlike the macros above these do not have default definitions, so we can use
|
||||
// #ifdef MACRONAME to detect when these are available.
|
||||
//
|
||||
// BOOST_IS_ABSTRACT(T) true if T is an abstract type
|
||||
// BOOST_IS_BASE_OF(T,U) true if T is a base class of U
|
||||
@ -89,12 +87,12 @@
|
||||
# define BOOST_IS_POD(T) (__is_pod(T) && __has_trivial_constructor(T))
|
||||
# define BOOST_IS_EMPTY(T) __is_empty(T)
|
||||
# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
|
||||
# define BOOST_HAS_TRIVIAL_COPY(T) __has_trivial_copy(T)
|
||||
# define BOOST_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T)
|
||||
# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
|
||||
# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
|
||||
# define BOOST_HAS_NOTHROW_COPY(T) __has_nothrow_copy(T)
|
||||
# define BOOST_HAS_NOTHROW_ASSIGN(T) __has_nothrow_assign(T)
|
||||
# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T)|| ( ::boost::is_pod<T>::value && !::boost::is_volatile<T>::value))
|
||||
# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) || ( ::boost::is_pod<T>::value && ! ::boost::is_const<T>::value && !::boost::is_volatile<T>::value))
|
||||
# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) || ::boost::is_pod<T>::value)
|
||||
# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) || ::boost::has_trivial_constructor<T>::value)
|
||||
# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) || ::boost::has_trivial_copy<T>::value)
|
||||
# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) || ::boost::has_trivial_assign<T>::value)
|
||||
# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
|
||||
|
||||
# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
|
||||
@ -134,9 +132,9 @@
|
||||
# define BOOST_IS_UNION(T) __is_union(T)
|
||||
# define BOOST_IS_POD(T) __is_pod(T)
|
||||
# define BOOST_IS_EMPTY(T) __is_empty(T)
|
||||
# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
|
||||
# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
|
||||
# define BOOST_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T)
|
||||
# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) (__has_trivial_constructor(T) && ! ::boost::is_volatile<T>::value)
|
||||
# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value && ! ::boost::is_volatile<T>::value)
|
||||
# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && ! ::boost::is_volatile<T>::value)
|
||||
# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
|
||||
# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
|
||||
# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) && !is_volatile<T>::value && !is_reference<T>::value)
|
||||
@ -167,8 +165,8 @@
|
||||
# define BOOST_IS_POD(T) __is_pod(T)
|
||||
# define BOOST_IS_EMPTY(T) __is_empty(T)
|
||||
# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
|
||||
# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
|
||||
# define BOOST_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T)
|
||||
# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value && && !is_volatile<T>::value)
|
||||
# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value)
|
||||
# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
|
||||
# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
|
||||
# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) && !is_volatile<T>::value && !is_reference<T>::value)
|
||||
@ -194,13 +192,13 @@
|
||||
# define BOOST_IS_UNION(T) __is_union(T)
|
||||
# define BOOST_IS_POD(T) __is_pod(T)
|
||||
# define BOOST_IS_EMPTY(T) __is_empty(T)
|
||||
# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) (__has_trivial_default_constructor(T) || is_void<T>::value)
|
||||
# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value || is_void<T>::value)
|
||||
# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value || is_void<T>::value)
|
||||
# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) || is_void<T>::value)
|
||||
# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_default_constructor(T) || is_void<T>::value)
|
||||
# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value || is_void<T>::value)
|
||||
# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value || is_void<T>::value)
|
||||
# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) (__has_trivial_default_constructor(T))
|
||||
# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value)
|
||||
# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value)
|
||||
# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T))
|
||||
# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_default_constructor(T))
|
||||
# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value)
|
||||
# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value)
|
||||
# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
|
||||
|
||||
# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
|
||||
@ -214,50 +212,6 @@
|
||||
# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_IS_UNION
|
||||
# define BOOST_IS_UNION(T) false
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_IS_POD
|
||||
# define BOOST_IS_POD(T) false
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_IS_EMPTY
|
||||
# define BOOST_IS_EMPTY(T) false
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_HAS_TRIVIAL_CONSTRUCTOR
|
||||
# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) false
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_HAS_TRIVIAL_COPY
|
||||
# define BOOST_HAS_TRIVIAL_COPY(T) false
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_HAS_TRIVIAL_ASSIGN
|
||||
# define BOOST_HAS_TRIVIAL_ASSIGN(T) false
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_HAS_TRIVIAL_DESTRUCTOR
|
||||
# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) false
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_HAS_NOTHROW_CONSTRUCTOR
|
||||
# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) false
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_HAS_NOTHROW_COPY
|
||||
# define BOOST_HAS_NOTHROW_COPY(T) false
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_HAS_NOTHROW_ASSIGN
|
||||
# define BOOST_HAS_NOTHROW_ASSIGN(T) false
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_HAS_VIRTUAL_DESTRUCTOR
|
||||
# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) false
|
||||
#endif
|
||||
|
||||
#endif // BOOST_TT_INTRINSICS_HPP_INCLUDED
|
||||
|
||||
|
||||
|
@ -31,6 +31,12 @@
|
||||
// should be always the last #include directive
|
||||
#include <boost/type_traits/detail/bool_trait_def.hpp>
|
||||
|
||||
#ifndef BOOST_INTERNAL_IS_EMPTY
|
||||
#define BOOST_INTERNAL_IS_EMPTY(T) false
|
||||
#else
|
||||
#define BOOST_INTERNAL_IS_EMPTY(T) BOOST_IS_EMPTY(T)
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
|
||||
namespace detail {
|
||||
@ -83,7 +89,7 @@ struct is_empty_impl
|
||||
bool, value = (
|
||||
::boost::type_traits::ice_or<
|
||||
::boost::detail::empty_helper<cvt,::boost::is_class<T>::value>::value
|
||||
, BOOST_IS_EMPTY(cvt)
|
||||
, BOOST_INTERNAL_IS_EMPTY(cvt)
|
||||
>::value
|
||||
));
|
||||
};
|
||||
@ -118,7 +124,7 @@ struct is_empty_impl
|
||||
, ::boost::is_class<T>::value
|
||||
, ::boost::is_convertible< r_type,int>::value
|
||||
>::value
|
||||
, BOOST_IS_EMPTY(cvt)
|
||||
, BOOST_INTERNAL_IS_EMPTY(cvt)
|
||||
>::value));
|
||||
};
|
||||
|
||||
@ -187,14 +193,14 @@ struct is_empty_impl
|
||||
typedef typename result::type eh_type;
|
||||
|
||||
BOOST_STATIC_CONSTANT(bool, value =
|
||||
(::boost::type_traits::ice_or<eh_type::value, BOOST_IS_EMPTY(T)>::value));
|
||||
(::boost::type_traits::ice_or<eh_type::value, BOOST_INTERNAL_IS_EMPTY(T)>::value));
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
template <typename T> struct is_empty_impl
|
||||
{
|
||||
BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_EMPTY(T));
|
||||
BOOST_STATIC_CONSTANT(bool, value = BOOST_INTERNAL_IS_EMPTY(T));
|
||||
};
|
||||
|
||||
#endif // BOOST_MSVC6_MEMBER_TEMPLATES
|
||||
@ -217,5 +223,7 @@ BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_empty,T,::boost::detail::is_empty_impl<T>::value
|
||||
|
||||
#include <boost/type_traits/detail/bool_trait_undef.hpp>
|
||||
|
||||
#undef BOOST_INTERNAL_IS_EMPTY
|
||||
|
||||
#endif // BOOST_TT_IS_EMPTY_HPP_INCLUDED
|
||||
|
||||
|
@ -20,6 +20,12 @@
|
||||
// should be the last #include
|
||||
#include <boost/type_traits/detail/bool_trait_def.hpp>
|
||||
|
||||
#ifndef BOOST_IS_POD
|
||||
#define BOOST_INTERNAL_IS_POD(T) false
|
||||
#else
|
||||
#define BOOST_INTERNAL_IS_POD(T) BOOST_IS_POD(T)
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
|
||||
// forward declaration, needed by 'is_pod_array_helper' template below
|
||||
@ -36,7 +42,7 @@ template <typename T> struct is_pod_impl
|
||||
(::boost::type_traits::ice_or<
|
||||
::boost::is_scalar<T>::value,
|
||||
::boost::is_void<T>::value,
|
||||
BOOST_IS_POD(T)
|
||||
BOOST_INTERNAL_IS_POD(T)
|
||||
>::value));
|
||||
};
|
||||
|
||||
@ -60,7 +66,7 @@ struct is_pod_helper
|
||||
(::boost::type_traits::ice_or<
|
||||
::boost::is_scalar<T>::value,
|
||||
::boost::is_void<T>::value,
|
||||
BOOST_IS_POD(T)
|
||||
BOOST_INTERNAL_IS_POD(T)
|
||||
>::value));
|
||||
};
|
||||
};
|
||||
@ -132,4 +138,6 @@ BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pod,T,::boost::detail::is_pod_impl<T>::value)
|
||||
|
||||
#include <boost/type_traits/detail/bool_trait_undef.hpp>
|
||||
|
||||
#undef BOOST_INTERNAL_IS_POD
|
||||
|
||||
#endif // BOOST_TT_IS_POD_HPP_INCLUDED
|
||||
|
@ -25,7 +25,11 @@ namespace detail {
|
||||
template <typename T> struct is_union_impl
|
||||
{
|
||||
typedef typename remove_cv<T>::type cvt;
|
||||
#ifdef BOOST_IS_UNION
|
||||
BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_UNION(cvt));
|
||||
#else
|
||||
BOOST_STATIC_CONSTANT(bool, value = false);
|
||||
#endif
|
||||
};
|
||||
#else
|
||||
//
|
||||
@ -35,7 +39,11 @@ template <typename T> struct is_union_impl
|
||||
//
|
||||
template <typename T> struct is_union_impl
|
||||
{
|
||||
#ifdef BOOST_IS_UNION
|
||||
BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_UNION(T));
|
||||
#else
|
||||
BOOST_STATIC_CONSTANT(bool, value = false);
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
} // namespace detail
|
||||
|
@ -193,7 +193,7 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<int[3][2]>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<int[2][4][5][6][3]>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<UDT>::value, false);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<empty_UDT>::value, false);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<void>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<void>::value, false);
|
||||
// cases we would like to succeed but can't implement in the language:
|
||||
BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<empty_POD_UDT>::value, true, false);
|
||||
BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_assign<POD_UDT>::value, true, false);
|
||||
|
@ -151,7 +151,7 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor<int[3][2]>::value, t
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor<int[2][4][5][6][3]>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor<UDT>::value, false);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor<empty_UDT>::value, false);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor<void>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor<void>::value, false);
|
||||
// cases we would like to succeed but can't implement in the language:
|
||||
BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor<empty_POD_UDT>::value, true, false);
|
||||
BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor<POD_UDT>::value, true, false);
|
||||
|
@ -189,7 +189,7 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<int[2]>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<int[3][2]>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<int[2][4][5][6][3]>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<UDT>::value, false);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<void>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<void>::value, false);
|
||||
// cases we would like to succeed but can't implement in the language:
|
||||
BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<empty_POD_UDT>::value, true, false);
|
||||
BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_copy<POD_UDT>::value, true, false);
|
||||
|
@ -185,7 +185,7 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<int[3][2]>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<int[2][4][5][6][3]>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<UDT>::value, false);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<empty_UDT>::value, false);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<void>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign<void>::value, false);
|
||||
// cases we would like to succeed but can't implement in the language:
|
||||
BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_assign<empty_POD_UDT>::value, true, false);
|
||||
BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_assign<POD_UDT>::value, true, false);
|
||||
|
@ -185,7 +185,7 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<int[2]>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<int[3][2]>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<int[2][4][5][6][3]>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<UDT>::value, false);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<void>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy<void>::value, false);
|
||||
// cases we would like to succeed but can't implement in the language:
|
||||
BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_copy<empty_POD_UDT>::value, true, false);
|
||||
BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_copy<POD_UDT>::value, true, false);
|
||||
|
@ -154,7 +154,7 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor<int[3][2]>::value, tr
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor<int[2][4][5][6][3]>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor<UDT>::value, false);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor<empty_UDT>::value, false);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor<void>::value, true);
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor<void>::value, false);
|
||||
// cases we would like to succeed but can't implement in the language:
|
||||
BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_destructor<empty_POD_UDT>::value, true, false);
|
||||
BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_destructor<POD_UDT>::value, true, false);
|
||||
|
@ -24,7 +24,7 @@ struct base2 { };
|
||||
struct middle2 : public virtual base2 { };
|
||||
struct derived2 : public middle2 { };
|
||||
|
||||
#ifndef BOOST_NO_RVALUE_REFERENCES
|
||||
#if !defined(BOOST_NO_RVALUE_REFERENCES)
|
||||
|
||||
template<typename T>
|
||||
struct test_bug_4530
|
||||
|
Reference in New Issue
Block a user