Imported Upstream version 1.57.0
[platform/upstream/boost.git] / libs / type_traits / doc / intrinsics.qbk
index 2d171f6..4967e47 100644 (file)
 There are some traits that can not be implemented within the current C++ language:
 to make these traits "just work" with user defined types, some kind of additional
 help from the compiler is required.  Currently (April 2008) Visual C++ 8 and 9,
-GNU GCC 4.3 and MWCW 9
-provide the necessary intrinsics, and other compilers will no doubt follow in due 
-course.  
+GNU GCC 4.3 and MWCW 9 provide at least some of the the necessary intrinsics, 
+and other compilers will no doubt follow in due course.  
 
 The Following traits classes always need compiler support to do the right thing 
 for all types 
 (but all have safe fallback positions if this support is unavailable):
 
+* __is_final
 * __is_union
 * __is_pod
 * __has_trivial_constructor
 * __has_trivial_copy
+* __has_trivial_move_constructor
 * __has_trivial_assign
+* __has_trivial_move_assign
 * __has_trivial_destructor
 * __has_nothrow_constructor
 * __has_nothrow_copy
@@ -51,7 +53,9 @@ a matter of defining one of more of the following macros:
    [[BOOST_IS_EMPTY(T)][Should evaluate to true if T is an empty struct or union]]
    [[BOOST_HAS_TRIVIAL_CONSTRUCTOR(T)][Should evaluate to true if the default constructor for T is trivial (i.e. has no effect)]]
    [[BOOST_HAS_TRIVIAL_COPY(T)][Should evaluate to true if T has a trivial copy constructor (and can therefore be replaced by a call to memcpy)]]
+   [[BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T)][Should evaluate to true if T has a trivial move constructor (and can therefore be replaced by a call to memcpy)]]
    [[BOOST_HAS_TRIVIAL_ASSIGN(T)][Should evaluate to true if T has a trivial assignment operator (and can therefore be replaced by a call to memcpy)]]
+   [[BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T)][Should evaluate to true if T has a trivial move assignment operator (and can therefore be replaced by a call to memcpy)]]
    [[BOOST_HAS_TRIVIAL_DESTRUCTOR(T)][Should evaluate to true if T has a trivial destructor (i.e. ~T() has no effect)]]
    [[BOOST_HAS_NOTHROW_CONSTRUCTOR(T)][Should evaluate to true if `T x;` can not throw]]
    [[BOOST_HAS_NOTHROW_COPY(T)][Should evaluate to true if `T(t)` can not throw]]
@@ -64,7 +68,8 @@ a matter of defining one of more of the following macros:
    [[BOOST_IS_CONVERTIBLE(T,U)][Should evaluate to true if T is convertible to U]]
    [[BOOST_IS_ENUM(T)][Should evaluate to true is T is an enum]]
    [[BOOST_IS_POLYMORPHIC(T)][Should evaluate to true if T is a polymorphic type]]
-   [[BOOST_ALIGNMENT_OF(T)][Should evaluate to the alignment requirements of type T.]]
+   [[BOOST_ALIGNMENT_OF(T)][Should evaluate to the alignment requirements of type T]]
+   [[BOOST_IS_FINAL(T)][Should evaluate to true if T is a class type declared with the final specifier]]
    
 ]