Boost logo

Boost-Commit :

From: john_at_[hidden]
Date: 2007-09-10 05:20:05


Author: johnmaddock
Date: 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
New Revision: 39175
URL: http://svn.boost.org/trac/boost/changeset/39175

Log:
Big type_traits update:

Added make_signed, make_unsigned and is_complex.
Added docs for some previously undocumented traits: is_signed, is_unsigned and decay.html
Added synonyms for some traits that have changed name in the latest C++ std draft.
Re-organised docs, moved docs out of the main doc build for now (it takes too long).

This also fixes issues: http://svn.boost.org/trac/boost/ticket/492 and http://svn.boost.org/trac/boost/ticket/1008.
Added:
   trunk/boost/type_traits/is_complex.hpp (contents, props changed)
   trunk/boost/type_traits/make_signed.hpp (contents, props changed)
   trunk/boost/type_traits/make_unsigned.hpp (contents, props changed)
   trunk/libs/type_traits/doc/add_const.qbk (contents, props changed)
   trunk/libs/type_traits/doc/add_cv.qbk (contents, props changed)
   trunk/libs/type_traits/doc/add_pointer.qbk (contents, props changed)
   trunk/libs/type_traits/doc/add_reference.qbk (contents, props changed)
   trunk/libs/type_traits/doc/add_volatile.qbk (contents, props changed)
   trunk/libs/type_traits/doc/aligned_storage.qbk (contents, props changed)
   trunk/libs/type_traits/doc/alignment_of.qbk (contents, props changed)
   trunk/libs/type_traits/doc/alignment_traits.qbk (contents, props changed)
   trunk/libs/type_traits/doc/background.qbk (contents, props changed)
   trunk/libs/type_traits/doc/credits.qbk (contents, props changed)
   trunk/libs/type_traits/doc/decay.qbk (contents, props changed)
   trunk/libs/type_traits/doc/decomposing_func.qbk (contents, props changed)
   trunk/libs/type_traits/doc/examples.qbk (contents, props changed)
   trunk/libs/type_traits/doc/extent.qbk (contents, props changed)
   trunk/libs/type_traits/doc/floating_point_promotion.qbk (contents, props changed)
   trunk/libs/type_traits/doc/function_traits.qbk (contents, props changed)
   trunk/libs/type_traits/doc/has_nothrow_assign.qbk (contents, props changed)
   trunk/libs/type_traits/doc/has_nothrow_constructor.qbk (contents, props changed)
   trunk/libs/type_traits/doc/has_nothrow_copy.qbk (contents, props changed)
   trunk/libs/type_traits/doc/has_trivial_assign.qbk (contents, props changed)
   trunk/libs/type_traits/doc/has_trivial_constructor.qbk (contents, props changed)
   trunk/libs/type_traits/doc/has_trivial_copy.qbk (contents, props changed)
   trunk/libs/type_traits/doc/has_trivial_destructor.qbk (contents, props changed)
   trunk/libs/type_traits/doc/has_virtual_destructor.qbk (contents, props changed)
   trunk/libs/type_traits/doc/html/
   trunk/libs/type_traits/doc/html/boost_typetraits/
   trunk/libs/type_traits/doc/html/boost_typetraits/background.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/category/
   trunk/libs/type_traits/doc/html/boost_typetraits/category.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/category/alignment.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/category/background.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/category/function.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/category/transform.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/category/value_traits/
   trunk/libs/type_traits/doc/html/boost_typetraits/category/value_traits.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/category/value_traits/primary.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/category/value_traits/properties.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/category/value_traits/relate.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/credits.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/examples/
   trunk/libs/type_traits/doc/html/boost_typetraits/examples.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/examples/copy.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/examples/destruct.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/examples/fill.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/examples/iter.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/examples/to_double.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/intrinsics.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/intro.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/mpl.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/
   trunk/libs/type_traits/doc/html/boost_typetraits/reference.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/add_const.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/add_cv.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/add_pointer.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/add_reference.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/add_volatile.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/aligned_storage.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/alignment_of.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/decay.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/extent.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/floating_point_promotion.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/function_traits.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_no_throw_def_cons.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_nothrow_assign.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_nothrow_constructor.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_nothrow_copy.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_nothrow_cp_cons.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_assign.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_constructor.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_copy.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_cp_cons.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_def_cons.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_destructor.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_virtual_destructor.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/integral_constant.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/integral_promotion.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_abstract.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_arithmetic.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_array.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_base_of.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_class.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_complex.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_compound.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_const.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_convertible.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_empty.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_enum.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_floating_point.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_function.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_fundamental.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_integral.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_member_function_pointer.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_member_object_pointer.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_member_pointer.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_object.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_pod.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_pointer.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_polymorphic.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_reference.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_same.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_scalar.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_signed.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_stateless.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_union.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_unsigned.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_void.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_volatile.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/make_signed.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/make_unsigned.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/promote.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/rank.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_all_extents.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_const.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_cv.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_extent.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_pointer.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_reference.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_volatile.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/type_with_alignment.html (contents, props changed)
   trunk/libs/type_traits/doc/html/boost_typetraits/user_defined.html (contents, props changed)
   trunk/libs/type_traits/doc/html/index.html (contents, props changed)
   trunk/libs/type_traits/doc/integral_constant.qbk (contents, props changed)
   trunk/libs/type_traits/doc/integral_promotion.qbk (contents, props changed)
   trunk/libs/type_traits/doc/intrinsics.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_abstract.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_arithmetic.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_array.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_base_of.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_class.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_complex.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_compound.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_const.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_convertible.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_empty.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_enum.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_floating_point.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_function.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_fundamental.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_integral.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_member_function_pointer.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_member_object_pointer.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_member_pointer.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_object.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_pod.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_pointer.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_polymorphic.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_reference.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_same.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_scalar.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_signed.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_stateless.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_union.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_unsigned.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_void.qbk (contents, props changed)
   trunk/libs/type_traits/doc/is_volatile.qbk (contents, props changed)
   trunk/libs/type_traits/doc/make_signed.qbk (contents, props changed)
   trunk/libs/type_traits/doc/make_unsigned.qbk (contents, props changed)
   trunk/libs/type_traits/doc/mpl.qbk (contents, props changed)
   trunk/libs/type_traits/doc/promote.qbk (contents, props changed)
   trunk/libs/type_traits/doc/rank.qbk (contents, props changed)
   trunk/libs/type_traits/doc/remove_all_extents.qbk (contents, props changed)
   trunk/libs/type_traits/doc/remove_const.qbk (contents, props changed)
   trunk/libs/type_traits/doc/remove_cv.qbk (contents, props changed)
   trunk/libs/type_traits/doc/remove_extent.qbk (contents, props changed)
   trunk/libs/type_traits/doc/remove_pointer.qbk (contents, props changed)
   trunk/libs/type_traits/doc/remove_reference.qbk (contents, props changed)
   trunk/libs/type_traits/doc/remove_volatile.qbk (contents, props changed)
   trunk/libs/type_traits/doc/transform_traits.qbk (contents, props changed)
   trunk/libs/type_traits/doc/type_with_alignment.qbk (contents, props changed)
   trunk/libs/type_traits/doc/user_defined.qbk (contents, props changed)
   trunk/libs/type_traits/doc/value_traits.qbk (contents, props changed)
   trunk/libs/type_traits/test/is_complex_test.cpp (contents, props changed)
   trunk/libs/type_traits/test/make_signed_test.cpp (contents, props changed)
   trunk/libs/type_traits/test/make_unsigned_test.cpp (contents, props changed)
Text files modified:
   trunk/boost/type_traits.hpp | 4
   trunk/boost/type_traits/has_nothrow_constructor.hpp | 1
   trunk/boost/type_traits/has_nothrow_copy.hpp | 1
   trunk/boost/type_traits/has_trivial_constructor.hpp | 1
   trunk/boost/type_traits/has_trivial_copy.hpp | 1
   trunk/boost/type_traits/is_signed.hpp | 4
   trunk/boost/type_traits/is_unsigned.hpp | 4
   trunk/doc/Jamfile.v2 | 5
   trunk/doc/src/boost.xml | 12
   trunk/libs/type_traits/cxx_type_traits.htm | 9
   trunk/libs/type_traits/doc/Jamfile.v2 | 51
   trunk/libs/type_traits/doc/type_traits.qbk | 3111 ++-------------------------------------
   trunk/libs/type_traits/index.html | 10
   13 files changed, 260 insertions(+), 2954 deletions(-)

Modified: trunk/boost/type_traits.hpp
==============================================================================
--- trunk/boost/type_traits.hpp (original)
+++ trunk/boost/type_traits.hpp 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -75,6 +75,10 @@
 #include "boost/type_traits/integral_promotion.hpp"
 #include "boost/type_traits/promote.hpp"
 #endif
+#include <boost/type_traits/make_unsigned.hpp>
+#include <boost/type_traits/make_signed.hpp>
+#include <boost/type_traits/decay.hpp>
+#include <boost/type_traits/is_complex.hpp>
 
 #include "boost/type_traits/ice.hpp"
 

Modified: trunk/boost/type_traits/has_nothrow_constructor.hpp
==============================================================================
--- trunk/boost/type_traits/has_nothrow_constructor.hpp (original)
+++ trunk/boost/type_traits/has_nothrow_constructor.hpp 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -30,6 +30,7 @@
 }
 
 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)
 
 } // namespace boost
 

Modified: trunk/boost/type_traits/has_nothrow_copy.hpp
==============================================================================
--- trunk/boost/type_traits/has_nothrow_copy.hpp (original)
+++ trunk/boost/type_traits/has_nothrow_copy.hpp 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -30,6 +30,7 @@
 }
 
 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)
 
 } // namespace boost
 

Modified: trunk/boost/type_traits/has_trivial_constructor.hpp
==============================================================================
--- trunk/boost/type_traits/has_trivial_constructor.hpp (original)
+++ trunk/boost/type_traits/has_trivial_constructor.hpp 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -34,6 +34,7 @@
 } // namespace detail
 
 BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_constructor,T,::boost::detail::has_trivial_ctor_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_default_constructor,T,::boost::detail::has_trivial_ctor_impl<T>::value)
 
 } // namespace boost
 

Modified: trunk/boost/type_traits/has_trivial_copy.hpp
==============================================================================
--- trunk/boost/type_traits/has_trivial_copy.hpp (original)
+++ trunk/boost/type_traits/has_trivial_copy.hpp 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -40,6 +40,7 @@
 } // namespace detail
 
 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)
 
 } // namespace boost
 

Added: trunk/boost/type_traits/is_complex.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/type_traits/is_complex.hpp 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,34 @@
+// (C) Copyright John Maddock 2007.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_COMPLEX_HPP
+#define BOOST_TT_IS_COMPLEX_HPP
+
+#include <boost/type_traits/is_convertible.hpp>
+#include <complex>
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+
+namespace boost {
+namespace detail{
+
+struct is_convertible_from_tester
+{
+ template <class T>
+ is_convertible_from_tester(const std::complex<T>&);
+};
+
+}
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_complex,T,(::boost::is_convertible<T, detail::is_convertible_from_tester>::value))
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif //BOOST_TT_IS_COMPLEX_HPP

Modified: trunk/boost/type_traits/is_signed.hpp
==============================================================================
--- trunk/boost/type_traits/is_signed.hpp (original)
+++ trunk/boost/type_traits/is_signed.hpp 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -11,6 +11,7 @@
 #define BOOST_TT_IS_SIGNED_HPP_INCLUDED
 
 #include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/remove_cv.hpp>
 #include <boost/type_traits/is_enum.hpp>
 #include <boost/type_traits/detail/ice_or.hpp>
 
@@ -26,7 +27,8 @@
 template <class T>
 struct is_signed_helper
 {
- BOOST_STATIC_CONSTANT(bool, value = (static_cast<T>(-1) < 0));
+ typedef typename remove_cv<T>::type no_cv_t;
+ BOOST_STATIC_CONSTANT(bool, value = (static_cast<no_cv_t>(-1) < 0));
 };
 
 template <bool integral_type>

Modified: trunk/boost/type_traits/is_unsigned.hpp
==============================================================================
--- trunk/boost/type_traits/is_unsigned.hpp (original)
+++ trunk/boost/type_traits/is_unsigned.hpp 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -12,6 +12,7 @@
 
 #include <boost/type_traits/is_integral.hpp>
 #include <boost/type_traits/is_enum.hpp>
+#include <boost/type_traits/remove_cv.hpp>
 #include <boost/type_traits/detail/ice_or.hpp>
 
 // should be the last #include
@@ -26,7 +27,8 @@
 template <class T>
 struct is_ununsigned_helper
 {
- BOOST_STATIC_CONSTANT(bool, value = (static_cast<T>(-1) > 0));
+ typedef typename remove_cv<T>::type no_cv_t;
+ BOOST_STATIC_CONSTANT(bool, value = (static_cast<no_cv_t>(-1) > 0));
 };
 
 template <bool integral_type>

Added: trunk/boost/type_traits/make_signed.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/type_traits/make_signed.hpp 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,136 @@
+
+// (C) John Maddock 2007.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_MAKE_SIGNED_HPP_INCLUDED
+#define BOOST_TT_MAKE_SIGNED_HPP_INCLUDED
+
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_signed.hpp>
+#include <boost/type_traits/is_unsigned.hpp>
+#include <boost/type_traits/is_enum.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_volatile.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_volatile.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/type_traits/detail/ice_not.hpp>
+#include <boost/static_assert.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+template <class T>
+struct make_signed_imp
+{
+ BOOST_STATIC_ASSERT(
+ (::boost::type_traits::ice_or< ::boost::is_integral<T>::value, ::boost::is_enum<T>::value>::value));
+#if !BOOST_WORKAROUND(BOOST_MSVC, <=1300)
+ BOOST_STATIC_ASSERT(
+ (::boost::type_traits::ice_not< ::boost::is_same<
+ typename remove_cv<T>::type, bool>::value>::value));
+#endif
+
+ typedef typename remove_cv<T>::type t_no_cv;
+ typedef typename mpl::if_c<
+ (::boost::type_traits::ice_and<
+ ::boost::is_signed<T>::value,
+ ::boost::is_integral<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value >::value),
+ T,
+ typename mpl::if_c<
+ (::boost::type_traits::ice_and<
+ ::boost::is_integral<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value>
+ ::value),
+ typename mpl::if_<
+ is_same<t_no_cv, unsigned char>,
+ signed char,
+ typename mpl::if_<
+ is_same<t_no_cv, unsigned short>,
+ signed short,
+ typename mpl::if_<
+ is_same<t_no_cv, unsigned int>,
+ int,
+ typename mpl::if_<
+ is_same<t_no_cv, unsigned long>,
+ long,
+#if defined(BOOST_HAS_LONG_LONG)
+ long long
+#elif defined(BOOST_HAS_MS_INT64)
+ __int64
+#else
+ long
+#endif
+ >::type
+ >::type
+ >::type
+ >::type,
+ // Not a regular integer type:
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned char),
+ signed char,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned short),
+ signed short,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned int),
+ int,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned long),
+ long,
+#if defined(BOOST_HAS_LONG_LONG)
+ long long
+#elif defined(BOOST_HAS_MS_INT64)
+ __int64
+#else
+ long
+#endif
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type base_integer_type;
+
+ // Add back any const qualifier:
+ typedef typename mpl::if_<
+ is_const<T>,
+ typename add_const<base_integer_type>::type,
+ base_integer_type
+ >::type const_base_integer_type;
+
+ // Add back any volatile qualifier:
+ typedef typename mpl::if_<
+ is_volatile<T>,
+ typename add_volatile<const_base_integer_type>::type,
+ const_base_integer_type
+ >::type type;
+};
+
+
+} // namespace detail
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(make_signed,T,typename boost::detail::make_signed_imp<T>::type)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_ADD_REFERENCE_HPP_INCLUDED

Added: trunk/boost/type_traits/make_unsigned.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/type_traits/make_unsigned.hpp 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,136 @@
+
+// (C) John Maddock 2007.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_MAKE_UNSIGNED_HPP_INCLUDED
+#define BOOST_TT_MAKE_UNSIGNED_HPP_INCLUDED
+
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_signed.hpp>
+#include <boost/type_traits/is_unsigned.hpp>
+#include <boost/type_traits/is_enum.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_volatile.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_volatile.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/type_traits/detail/ice_not.hpp>
+#include <boost/static_assert.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+template <class T>
+struct make_unsigned_imp
+{
+ BOOST_STATIC_ASSERT(
+ (::boost::type_traits::ice_or< ::boost::is_integral<T>::value, ::boost::is_enum<T>::value>::value));
+#if !BOOST_WORKAROUND(BOOST_MSVC, <=1300)
+ BOOST_STATIC_ASSERT(
+ (::boost::type_traits::ice_not< ::boost::is_same<
+ typename remove_cv<T>::type, bool>::value>::value));
+#endif
+
+ typedef typename remove_cv<T>::type t_no_cv;
+ typedef typename mpl::if_c<
+ (::boost::type_traits::ice_and<
+ ::boost::is_unsigned<T>::value,
+ ::boost::is_integral<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value >::value),
+ T,
+ typename mpl::if_c<
+ (::boost::type_traits::ice_and<
+ ::boost::is_integral<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value>
+ ::value),
+ typename mpl::if_<
+ is_same<t_no_cv, signed char>,
+ unsigned char,
+ typename mpl::if_<
+ is_same<t_no_cv, short>,
+ unsigned short,
+ typename mpl::if_<
+ is_same<t_no_cv, int>,
+ unsigned int,
+ typename mpl::if_<
+ is_same<t_no_cv, long>,
+ unsigned long,
+#if defined(BOOST_HAS_LONG_LONG)
+ unsigned long long
+#elif defined(BOOST_HAS_MS_INT64)
+ unsigned __int64
+#else
+ unsigned long
+#endif
+ >::type
+ >::type
+ >::type
+ >::type,
+ // Not a regular integer type:
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned char),
+ unsigned char,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned short),
+ unsigned short,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned int),
+ unsigned int,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned long),
+ unsigned long,
+#if defined(BOOST_HAS_LONG_LONG)
+ unsigned long long
+#elif defined(BOOST_HAS_MS_INT64)
+ unsigned __int64
+#else
+ unsigned long
+#endif
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type base_integer_type;
+
+ // Add back any const qualifier:
+ typedef typename mpl::if_<
+ is_const<T>,
+ typename add_const<base_integer_type>::type,
+ base_integer_type
+ >::type const_base_integer_type;
+
+ // Add back any volatile qualifier:
+ typedef typename mpl::if_<
+ is_volatile<T>,
+ typename add_volatile<const_base_integer_type>::type,
+ const_base_integer_type
+ >::type type;
+};
+
+
+} // namespace detail
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(make_unsigned,T,typename boost::detail::make_unsigned_imp<T>::type)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_ADD_REFERENCE_HPP_INCLUDED

Modified: trunk/doc/Jamfile.v2
==============================================================================
--- trunk/doc/Jamfile.v2 (original)
+++ trunk/doc/Jamfile.v2 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -11,7 +11,7 @@
     <dependency>../libs/algorithm/string/doc//autodoc.xml
     <dependency>../libs/logic/doc//reference.xml
     <dependency>../libs/functional/hash/doc//hash
- <dependency>../libs/type_traits/doc//type_traits
+ #<dependency>../libs/type_traits/doc//type_traits
     <dependency>../libs/static_assert/doc//static_assert
     <dependency>../libs/tr1/doc//tr1
     <dependency>../libs/math/doc//math
@@ -36,7 +36,7 @@
     ## Add path references to the QuickBook generated docs...
 
     <implicit-dependency>../libs/functional/hash/doc//hash
- <implicit-dependency>../libs/type_traits/doc//type_traits
+ #<implicit-dependency>../libs/type_traits/doc//type_traits
     <implicit-dependency>../libs/static_assert/doc//static_assert
     <implicit-dependency>../libs/tr1/doc//tr1
     <implicit-dependency>../libs/math/doc//math
@@ -60,3 +60,4 @@
 explicit css ;
 install images : [ glob src/images/*.png ] : <location>html/images ;
 explicit images ;
+

Modified: trunk/doc/src/boost.xml
==============================================================================
--- trunk/doc/src/boost.xml (original)
+++ trunk/doc/src/boost.xml 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -681,7 +681,16 @@
      </libraryinfo>
    </library>
 
- <xi:include href="type_traits.xml"/>
+ <library name="Type Traits" dirname="type_traits" html-only="1">
+ <libraryinfo>
+ <author>
+ <firstname>John</firstname>
+ <surname>Maddock</surname>
+ </author>
+ <librarypurpose>Meta-programming support library.</librarypurpose>
+ <librarycategory name="category:generic"/>
+ </libraryinfo>
+ </library>
  
    <xi:include href="typeof.xml"/>
 
@@ -743,3 +752,4 @@
   
   <xi:include href="using.xml"/>
 </boostbook>
+

Modified: trunk/libs/type_traits/cxx_type_traits.htm
==============================================================================
--- trunk/libs/type_traits/cxx_type_traits.htm (original)
+++ trunk/libs/type_traits/cxx_type_traits.htm 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -1,13 +1,11 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
   <head>
- <meta http-equiv="refresh" content="0; URL=../../doc/html/boost_typetraits/background.html">
+ <meta http-equiv="refresh" content="0; URL=doc/html/boost_typetraits/background.html">
   </head>
- <body>
+ <body><P>
     Automatic redirection failed, please go to
- ../../doc/html/boost_typetraits/background.html
- or view the online version at
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/boost_typetraits/background.html
+ doc/html/boost_typetraits/background.html.</P>
       <P>Copyright&nbsp;John Maddock 2006</P>
       <P>Distributed under the Boost Software License, Version 1.0. (See accompanying file <A href="../../LICENSE_1_0.txt">
             LICENSE_1_0.txt</A> or copy at www.boost.org/LICENSE_1_0.txt).</P>
@@ -17,3 +15,4 @@
 
 
 
+

Modified: trunk/libs/type_traits/doc/Jamfile.v2
==============================================================================
--- trunk/libs/type_traits/doc/Jamfile.v2 (original)
+++ trunk/libs/type_traits/doc/Jamfile.v2 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -10,10 +10,53 @@
     :
         type_traits
     :
- <xsl:param>nav.layout=none
- <xsl:param>navig.graphics=0
+ # Path for links to Boost:
+ <xsl:param>boost.root=../../../../
+ # Path for libraries index:
+ <xsl:param>boost.libraries=../../../libraries.htm
+ # Use the main Boost stylesheet:
+ <xsl:param>html.stylesheet=../../../../doc/html/boostbook.css
+
+ # Some general style settings:
+ <xsl:param>table.footnote.number.format=1
+ <xsl:param>footnote.number.format=1
+
+ # HTML options first:
+ # Use graphics not text for navigation:
+ <xsl:param>navig.graphics=1
+ # How far down we chunk nested sections, basically all of them:
+ <xsl:param>chunk.section.depth=10
+ # Don't put the first section on the same page as the TOC:
+ <xsl:param>chunk.first.sections=1
+ # How far down sections get TOC's
+ <xsl:param>toc.section.depth=10
+ # Max depth in each TOC:
+ <xsl:param>toc.max.depth=4
+ # How far down we go with TOC's
+ <xsl:param>generate.section.toc.level=10
+
+ # PDF Options:
+ # TOC Generation: this is needed for FOP-0.9 and later:
+ # <xsl:param>fop1.extensions=1
+ <xsl:param>xep.extensions=1
+ # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
+ <xsl:param>fop.extensions=0
+ # No indent on body text:
+ <xsl:param>body.start.indent=0pt
+ # Margin size:
+ <xsl:param>page.margin.inner=0.5in
+ # Margin size:
+ <xsl:param>page.margin.outer=0.5in
+ # Paper type = A4
+ <xsl:param>paper.type=A4
+ # Yes, we want graphics for admonishments:
+ <xsl:param>admon.graphics=1
+ # Set this one for PDF generation *only*:
+ # default pnd graphics are awful in PDF form,
+ # better use SVG's instead:
+ # <xsl:param>admon.graphics.extension=".svg"
     ;
 
-install html : ../../../doc/html/boostbook.css ;
-install ../ : ../../../boost.png ;
+#install html : ../../../doc/html/boostbook.css ;
+#install ../ : ../../../boost.png ;
 

Added: trunk/libs/type_traits/doc/add_const.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/add_const.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,33 @@
+[section:add_const add_const]
+
+ template <class T>
+ struct add_const
+ {
+ typedef __below type;
+ };
+
+__type The same type as `T const` for all `T`.
+
+__std_ref 3.9.3.
+
+__compat If the compiler does not support partial specialization of class-templates
+then this template will compile, but the member `type` will always be the same as
+type `T` except where __transform_workaround have been applied.
+
+__header ` #include <boost/type_traits/add_const.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`add_const<int>::type`][`int const`]]
+
+[[`add_const<int&>::type`] [`int&`]]
+
+[[`add_const<int*>::type`] [`int* const`]]
+
+[[`add_const<int const>::type`] [`int const`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/add_cv.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/add_cv.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,33 @@
+[section:add_cv add_cv]
+
+ template <class T>
+ struct add_cv
+ {
+ typedef __below type;
+ };
+
+__type The same type as `T const volatile` for all `T`.
+
+__std_ref 3.9.3.
+
+__compat If the compiler does not support partial specialization of class-templates
+then this template will compile, but the member `type` will always be the same as
+type `T` except where __transform_workaround have been applied.
+
+__header ` #include <boost/type_traits/add_cv.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`add_cv<int>::type`][`int const volatile`]]
+
+[[`add_cv<int&>::type`] [`int&`]]
+
+[[`add_cv<int*>::type`] [`int* const volatile`]]
+
+[[`add_cv<int const>::type`] [`int const volatile`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/add_pointer.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/add_pointer.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,37 @@
+[section:add_pointer add_pointer]
+
+ template <class T>
+ struct add_pointer
+ {
+ typedef __below type;
+ };
+
+__type The same type as `remove_reference<T>::type*`.
+
+The rationale for this template
+is that it produces the same type as `TYPEOF(&t)`,
+where `t` is an object of type `T`.
+
+__std_ref 8.3.1.
+
+__compat If the compiler does not support partial specialization of class-templates
+then this template will compile, but the member `type` will always be the same as
+type `T` except where __transform_workaround have been applied.
+
+__header ` #include <boost/type_traits/add_pointer.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`add_pointer<int>::type`][`int*`]]
+
+[[`add_pointer<int const&>::type`] [`int const*`]]
+
+[[`add_pointer<int*>::type`] [`int**`]]
+
+[[`add_pointer<int*&>::type`] [`int**`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/add_reference.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/add_reference.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,33 @@
+[section:add_reference add_reference]
+
+ template <class T>
+ struct add_reference
+ {
+ typedef __below type;
+ };
+
+__type If `T` is not a reference type then `T&`, otherwise `T`.
+
+__std_ref 8.3.2.
+
+__compat If the compiler does not support partial specialization of class-templates
+then this template will compile, but the member `type` will always be the same as
+type `T` except where __transform_workaround have been applied.
+
+__header ` #include <boost/type_traits/add_reference.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`add_reference<int>::type`][`int&`]]
+
+[[`add_reference<int const&>::type`] [`int const&`]]
+
+[[`add_reference<int*>::type`] [`int*&`]]
+
+[[`add_reference<int*&>::type`] [`int*&`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/add_volatile.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/add_volatile.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,33 @@
+[section:add_volatile add_volatile]
+
+ template <class T>
+ struct add_volatile
+ {
+ typedef __below type;
+ };
+
+__type The same type as `T volatile` for all `T`.
+
+__std_ref 3.9.3.
+
+__compat If the compiler does not support partial specialization of class-templates
+then this template will compile, but the member `type` will always be the same as
+type `T` except where __transform_workaround have been applied.
+
+__header ` #include <boost/type_traits/add_volatile.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`add_volatile<int>::type`][`int volatile`]]
+
+[[`add_volatile<int&>::type`] [`int&`]]
+
+[[`add_volatile<int*>::type`] [`int* volatile`]]
+
+[[`add_volatile<int const>::type`] [`int const volatile`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/aligned_storage.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/aligned_storage.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,14 @@
+[section:aligned_storage aligned_storage]
+
+ template <std::size_t Size, std::size_t Align>
+ struct aligned_storage
+ {
+ typedef __below type;
+ };
+
+__type a built-in or POD type with size `Size` and an alignment
+that is a multiple of `Align`.
+
+__header ` #include <boost/type_traits/aligned_storage.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[endsect]

Added: trunk/libs/type_traits/doc/alignment_of.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/alignment_of.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,26 @@
+[section:alignment_of alignment_of]
+ template <class T>
+ struct alignment_of : public __integral_constant<std::size_t, ALIGNOF(T)> {};
+
+__inherit Class template alignment_of inherits from
+`__integral_constant<std::size_t, ALIGNOF(T)>`, where `ALIGNOF(T)` is the
+alignment of type T.
+
+['Note: strictly speaking you should only rely on
+the value of `ALIGNOF(T)` being a multiple of the true alignment of T, although
+in practice it does compute the correct value in all the cases we know about.]
+
+__header ` #include <boost/type_traits/alignment_of.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`alignment_of<int>` inherits from `__integral_constant<std::size_t, ALIGNOF(int)>`.]
+
+[:`alignment_of<char>::type` is the type `__integral_constant<std::size_t, ALIGNOF(char)>`.]
+
+[:`alignment_of<double>::value` is an integral constant
+expression with value `ALIGNOF(double)`.]
+
+[:`alignment_of<T>::value_type` is the type `std::size_t`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/alignment_traits.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/alignment_traits.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,16 @@
+[section:alignment Synthesizing Types with Specific Alignments]
+
+Some low level memory management routines need to synthesize a POD type with
+specific alignment properties. The template `__type_with_alignment` finds the smallest
+type with a specified alignment, while template `__aligned_storage` creates a type
+with a specific size and alignment.
+
+[*Synopsis]
+
+ template <std::size_t Align>
+ struct __type_with_alignment;
+
+ template <std::size_t Size, std::size_t Align>
+ struct __aligned_storage;
+
+[endsect]

Added: trunk/libs/type_traits/doc/background.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/background.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,314 @@
+[section:background Background and Tutorial]
+
+The following is an updated version of the article "C++ Type traits"
+by John Maddock and Steve Cleary that appeared in the October 2000
+issue of [@http://www.ddj.com Dr Dobb's Journal].
+
+Generic programming (writing code which works with any data type meeting a
+set of requirements) has become the method of choice for providing reusable code.
+However, there are times in generic programming when "generic" just isn't
+good enough - sometimes the differences between types are too large for an
+efficient generic implementation. This is when the traits technique
+becomes important - by encapsulating those properties that need to be
+considered on a type by type basis inside a traits class, we can
+minimize the amount of code that has to differ from one type to another,
+and maximize the amount of generic code.
+
+Consider an example: when working with character strings, one common operation is
+to determine the length of a null terminated string. Clearly it's possible to
+write generic code that can do this, but it turns out that there are much more
+efficient methods available: for example, the C library functions `strlen` and
+`wcslen` are usually written in assembler, and with suitable hardware support
+can be considerably faster than a generic version written in C++.
+The authors of the C++ standard library realized this, and abstracted the
+properties of `char` and `wchar_t` into the class `char_traits`. Generic code
+that works with character strings can simply use `char_traits<>::length` to
+determine the length of a null terminated string, safe in the knowledge
+that specializations of `char_traits` will use the most appropriate method
+available to them.
+
+[h4 Type Traits]
+
+Class `char_traits` is a classic example of a collection of type specific
+properties wrapped up in a single class - what Nathan Myers termed a
+/baggage class/[link background.references \[1\]]. In the Boost type-traits library, we[link background.references \[2\]] have written a
+set of very specific traits classes, each of which encapsulate a single trait
+from the C++ type system; for example, is a type a pointer or a reference type?
+Or does a type have a trivial constructor, or a const-qualifier?
+The type-traits classes share a unified design: each class inherits from a
+the type __true_type if the type has the specified property and inherits from
+__false_type otherwise. As we will show, these classes can be used in
+generic programming to determine the properties of a given type and introduce
+optimizations that are appropriate for that case.
+
+The type-traits library also contains a set of classes that perform a
+specific transformation on a type; for example, they can remove a
+top-level const or volatile qualifier from a type. Each class that
+performs a transformation defines a single typedef-member `type`
+that is the result of the transformation. All of the type-traits
+classes are defined inside namespace `boost`; for brevity, namespace-qualification
+is omitted in most of the code samples given.
+
+[h4 Implementation]
+
+There are far too many separate classes contained in the type-traits library
+to give a full implementation here - see the source code in the Boost library
+for the full details - however, most of the implementation is fairly repetitive
+anyway, so here we will just give you a flavor for how some of the classes are
+implemented. Beginning with possibly the simplest class in the library,
+`is_void<T>` inherits from `__true_type` only if `T` is `void`.
+
+ template <typename T>
+ struct __is_void : public __false_type{};
+
+ template <>
+ struct __is_void<void> : public __true_type{};
+
+Here we define a primary version of the template class `__is_void`, and
+provide a full-specialization when `T` is `void`. While full specialization
+of a template class is an important technique, sometimes we need a
+solution that is halfway between a fully generic solution, and a full
+specialization. This is exactly the situation for which the standards committee
+defined partial template-class specialization. As an example, consider the
+class `boost::is_pointer<T>`: here we needed a primary version that handles
+all the cases where T is not a pointer, and a partial specialization to
+handle all the cases where T is a pointer:
+
+ template <typename T>
+ struct __is_pointer : public __false_type{};
+
+ template <typename T>
+ struct __is_pointer<T*> : public __true_type{};
+
+The syntax for partial specialization is somewhat arcane and could easily
+occupy an article in its own right; like full specialization, in order to
+write a partial specialization for a class, you must first declare the
+primary template. The partial specialization contains an extra <...> after the
+class name that contains the partial specialization parameters; these define
+the types that will bind to that partial specialization rather than the
+default template. The rules for what can appear in a partial specialization
+are somewhat convoluted, but as a rule of thumb if you can legally write two
+function overloads of the form:
+
+ void foo(T);
+ void foo(U);
+
+Then you can also write a partial specialization of the form:
+
+ template <typename T>
+ class c{ /*details*/ };
+
+ template <typename T>
+ class c<U>{ /*details*/ };
+
+This rule is by no means foolproof, but it is reasonably simple to remember
+and close enough to the actual rule to be useful for everyday use.
+
+As a more complex example of partial specialization consider the class
+`remove_extent<T>`. This class defines a single typedef-member `type` that
+is the same type as T but with any top-level array bounds removed;
+this is an example of a traits class that performs a transformation on a type:
+
+ template <typename T>
+ struct __remove_extent
+ { typedef T type; };
+
+ template <typename T, std::size_t N>
+ struct __remove_extent<T[N]>
+ { typedef T type; };
+
+The aim of `__remove_extent` is this: imagine a generic algorithm that is
+passed an array type as a template parameter, `__remove_extent` provides a
+means of determining the underlying type of the array. For example
+`remove_extent<int[4][5]>::type` would evaluate to the type `int[5]`.
+This example also shows that the number of template parameters in a
+partial specialization does not have to match the number in the
+default template. However, the number of parameters that appear after the
+class name do have to match the number and type of the parameters in the
+default template.
+
+[h4 Optimized copy]
+
+As an example of how the type traits classes can be used, consider the
+standard library algorithm copy:
+
+ template<typename Iter1, typename Iter2>
+ Iter2 copy(Iter1 first, Iter1 last, Iter2 out);
+
+Obviously, there's no problem writing a generic version of copy that works
+for all iterator types `Iter1` and `Iter2`; however, there are some
+circumstances when the copy operation can best be performed by a call to
+`memcpy`. In order to implement copy in terms of `memcpy` all of the
+following conditions need to be met:
+
+* Both of the iterator types `Iter1` and `Iter2` must be pointers.
+* Both `Iter1` and `Iter2` must point to the same type - excluding const and
+volatile-qualifiers.
+* The type pointed to by `Iter1` must have a trivial assignment operator.
+
+By trivial assignment operator we mean that the type is either a scalar type[link background.references \[3\]] or:
+
+* The type has no user defined assignment operator.
+* The type does not have any data members that are references.
+* All base classes, and all data member objects must have trivial assignment operators.
+
+If all these conditions are met then a type can be copied using `memcpy`
+rather than using a compiler generated assignment operator. The type-traits
+library provides a class `__has_trivial_assign`, such that
+`has_trivial_assign<T>::value` is true only if T has a trivial assignment operator.
+This class "just works" for scalar types, but has to be explicitly
+specialised for class/struct types that also happen to have a trivial assignment
+operator. In other words if __has_trivial_assign gives the wrong answer,
+it will give the "safe" wrong answer - that trivial assignment is not allowable.
+
+The code for an optimized version of copy that uses `memcpy` where appropriate is
+given in [link boost_typetraits.examples.copy the examples]. The code begins by defining a template
+function `do_copy` that performs a "slow but safe" copy. The last parameter passed
+to this function may be either a `__true_type` or a `__false_type`. Following that
+there is an overload of do_copy that uses `memcpy`: this time the iterators are required
+to actually be pointers to the same type, and the final parameter must be a
+`__true_type`. Finally, the version of `copy` calls `do_copy`, passing
+`__has_trivial_assign<value_type>()` as the final parameter: this will dispatch
+to the optimized version where appropriate, otherwise it will call the
+"slow but safe version".
+
+[h4 Was it worth it?]
+
+It has often been repeated in these columns that "premature optimization is the
+root of all evil" [link background.references \[4\]]. So the question must be asked: was our optimization
+premature? To put this in perspective the timings for our version of copy
+compared a conventional generic copy[link background.references \[5\]] are shown in table 1.
+
+Clearly the optimization makes a difference in this case; but, to be fair,
+the timings are loaded to exclude cache miss effects - without this
+accurate comparison between algorithms becomes difficult. However, perhaps
+we can add a couple of caveats to the premature optimization rule:
+
+*If you use the right algorithm for the job in the first place then optimization
+will not be required; in some cases, memcpy is the right algorithm.
+*If a component is going to be reused in many places by many people then
+optimizations may well be worthwhile where they would not be so for a single
+case - in other words, the likelihood that the optimization will be
+absolutely necessary somewhere, sometime is that much higher.
+Just as importantly the perceived value of the stock implementation will be
+higher: there is no point standardizing an algorithm if users reject it on
+the grounds that there are better, more heavily optimized versions available.
+
+[table Time taken to copy 1000 elements using `copy<const T*, T*>` (times in micro-seconds)
+
+[[Version] [T] [Time]]
+[["Optimized" copy] [char] [0.99]]
+[[Conventional copy] [char] [8.07]]
+[["Optimized" copy] [int] [2.52]]
+[[Conventional copy] [int] [8.02]]
+]
+
+[h4 Pair of References]
+The optimized copy example shows how type traits may be used to perform
+optimization decisions at compile-time. Another important usage of type traits
+is to allow code to compile that otherwise would not do so unless excessive
+partial specialization is used. This is possible by delegating partial
+specialization to the type traits classes. Our example for this form of
+usage is a pair that can hold references [link background.references \[6\]].
+
+First, let us examine the definition of `std::pair`, omitting the
+comparison operators, default constructor, and template copy constructor for
+simplicity:
+
+ template <typename T1, typename T2>
+ struct pair
+ {
+ typedef T1 first_type;
+ typedef T2 second_type;
+
+ T1 first;
+ T2 second;
+
+ pair(const T1 & nfirst, const T2 & nsecond)
+ :first(nfirst), second(nsecond) { }
+ };
+
+Now, this "pair" cannot hold references as it currently stands, because the
+constructor would require taking a reference to a reference, which is
+currently illegal [link background.references \[7\]]. Let us consider what the constructor's parameters
+would have to be in order to allow "pair" to hold non-reference types,
+references, and constant references:
+
+[table Required Constructor Argument Types
+[[Type of `T1`] [Type of parameter to initializing constructor]]
+[[T] [const T &]]
+[[T &] [T &]]
+[[const T &] [const T &]]
+]
+
+A little familiarity with the type traits classes allows us to construct a
+single mapping that allows us to determine the type of parameter from the
+type of the contained class. The type traits classes provide a
+transformation __add_reference, which adds a reference to its type,
+unless it is already a reference.
+
+[table Using add_reference to synthesize the correct constructor type
+[[Type of `T1`] [Type of `const T1`] [Type of `add_reference<const T1>::type`]]
+[[T] [const T] [const T &]]
+[[T &] [T & \[8\]] [T &]]
+[[const T &] [const T &] [const T &]]
+]
+
+This allows us to build a primary template definition for `pair` that can
+contain non-reference types, reference types, and constant reference types:
+
+ template <typename T1, typename T2>
+ struct pair
+ {
+ typedef T1 first_type;
+ typedef T2 second_type;
+
+ T1 first;
+ T2 second;
+
+ pair(boost::__add_reference<const T1>::type nfirst,
+ boost::__add_reference<const T2>::type nsecond)
+ :first(nfirst), second(nsecond) { }
+ };
+
+Add back in the standard comparison operators, default constructor,
+and template copy constructor (which are all the same), and you have a
+`std::pair` that can hold reference types!
+
+This same extension could have been done using partial template specialization
+of `pair`, but to specialize `pair` in this way would require three partial
+specializations, plus the primary template. Type traits allows us to
+define a single primary template that adjusts itself auto-magically to
+any of these partial specializations, instead of a brute-force partial
+specialization approach. Using type traits in this fashion allows
+programmers to delegate partial specialization to the type traits classes,
+resulting in code that is easier to maintain and easier to understand.
+
+[h4 Conclusion]
+
+We hope that in this article we have been able to give you some idea of
+what type-traits are all about. A more complete listing of the available
+classes are in the boost documentation, along with further examples using
+type traits. Templates have enabled C++ uses to take the advantage of the
+code reuse that generic programming brings; hopefully this article has
+shown that generic programming does not have to sink to the lowest common
+denominator, and that templates can be optimal as well as generic.
+
+[h4 Acknowledgements]
+
+The authors would like to thank Beman Dawes and Howard Hinnant for their
+helpful comments when preparing this article.
+
+[h4 [#background.references]References]
+
+# Nathan C. Myers, C++ Report, June 1995.
+# The type traits library is based upon contributions by Steve Cleary, Beman Dawes, Howard Hinnant and John Maddock: it can be found at www.boost.org.
+# A scalar type is an arithmetic type (i.e. a built-in integer or floating point type), an enumeration type, a pointer, a pointer to member, or a const- or volatile-qualified version of one of these types.
+# This quote is from Donald Knuth, ACM Computing Surveys, December 1974, pg 268.
+# The test code is available as part of the boost utility library (see algo_opt_examples.cpp), the code was compiled with gcc 2.95 with all optimisations turned on, tests were conducted on a 400MHz Pentium II machine running Microsoft Windows 98.
+# John Maddock and Howard Hinnant have submitted a "compressed_pair" library to Boost, which uses a technique similar to the one described here to hold references. Their pair also uses type traits to determine if any of the types are empty, and will derive instead of contain to conserve space -- hence the name "compressed".
+# This is actually an issue with the C++ Core Language Working Group (issue #106), submitted by Bjarne Stroustrup. The tentative resolution is to allow a "reference to a reference to T" to mean the same thing as a "reference to T", but only in template instantiation, in a method similar to multiple cv-qualifiers.
+# For those of you who are wondering why this shouldn't be const-qualified, remember that references are always implicitly constant (for example, you can't re-assign a reference). Remember also that "const T &" is something completely different. For this reason, cv-qualifiers on template type arguments that are references are ignored.
+
+[endsect]
+

Added: trunk/libs/type_traits/doc/credits.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/credits.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,33 @@
+[section:credits Credits]
+
+This documentation was pulled together by John Maddock, using
+[@../../tools/quickbook/doc/html/index.html Boost.Quickbook]
+and [@boostbook.html Boost.DocBook].
+
+The original version of this library was created by Steve Cleary,
+Beman Dawes, Howard Hinnant, and John Maddock. John Maddock is the
+current maintainer of the library.
+
+This version of type traits library is based on contributions by
+Adobe Systems Inc, David Abrahams, Steve Cleary,
+Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat Marcus,
+Itay Maman, John Maddock, Thorsten Ottosen, Robert Ramey and Jeremy Siek.
+
+Mat Marcus and Jesse Jones invented, and
+[@http://opensource.adobe.com/project4/project.shtml published a paper describing],
+the partial specialization workarounds used in this library.
+
+Aleksey Gurtovoy added MPL integration to the library.
+
+The __is_convertible template is based on code originally devised by
+Andrei Alexandrescu, see
+"[@http://www.cuj.com/experts/1810/alexandr.htm?topic=experts
+Generic<Programming>: Mappings between Types and Values]".
+
+The latest version of this library and documentation can be found at
+[@http://www.boost.org www.boost.org]. Bugs, suggestions and discussion
+should be directed to boost_at_[hidden]
+(see [@http://www.boost.org/more/mailing_lists.htm#main
+www.boost.org/more/mailing_lists.htm#main] for subscription details).
+
+[endsect]

Added: trunk/libs/type_traits/doc/decay.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/decay.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,32 @@
+[section:decay decay]
+
+ template <class T>
+ struct decay
+ {
+ typedef __below type;
+ };
+
+__type Let `U` be the result of `remove_reference<T>::type`, then if `U` is
+an array type, the result is `remove_extent<U>*`, otherwise if `U` is a
+function type then the result is `U*`, otherwise the result is `U`.
+
+__std_ref 3.9.1.
+
+__header ` #include <boost/type_traits/decay.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`decay<int[2][3]>::type`][`int[2]*`]]
+
+[[`decay<int(&)[2]>::type`] [`int*`]]
+
+[[`decay<int(&)(double)>::type`] [`int(*)(double)`]]
+
+[[`int(*)(double`] [`int(*)(double)`]]
+[[`int(double)`] [`int(*)(double)`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/decomposing_func.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/decomposing_func.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,12 @@
+[section:function Decomposing Function Types]
+
+The class template __function_traits extracts information from function types
+(see also __is_function). This traits class allows you to tell how many arguments
+a function takes, what those argument types are, and what the return type is.
+
+[*Synopsis]
+
+ template <std::size_t Align>
+ struct __function_traits;
+
+[endsect]

Added: trunk/libs/type_traits/doc/examples.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/examples.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,211 @@
+[section:examples Examples]
+
+[section:copy An Optimized Version of std::copy]
+
+Demonstrates a version of `std::copy` that uses `__has_trivial_assign` to
+determine whether to use `memcpy` to optimise the copy operation
+(see [@../../libs/type_traits/examples/copy_example.cpp copy_example.cpp]):
+
+ //
+ // opt::copy
+ // same semantics as std::copy
+ // calls memcpy where appropriate.
+ //
+
+ namespace detail{
+
+ template<typename I1, typename I2, bool b>
+ I2 copy_imp(I1 first, I1 last, I2 out, const boost::__integral_constant<bool, b>&)
+ {
+ while(first != last)
+ {
+ *out = *first;
+ ++out;
+ ++first;
+ }
+ return out;
+ }
+
+ template<typename T>
+ T* copy_imp(const T* first, const T* last, T* out, const boost::__true_type&)
+ {
+ memcpy(out, first, (last-first)*sizeof(T));
+ return out+(last-first);
+ }
+
+
+ }
+
+ template<typename I1, typename I2>
+ inline I2 copy(I1 first, I1 last, I2 out)
+ {
+ //
+ // We can copy with memcpy if T has a trivial assignment operator,
+ // and if the iterator arguments are actually pointers (this last
+ // requirement we detect with overload resolution):
+ //
+ typedef typename std::iterator_traits<I1>::value_type value_type;
+ return detail::copy_imp(first, last, out, boost::__has_trivial_assign<value_type>());
+ }
+
+
+[endsect]
+
+[section:fill An Optimised Version of std::fill]
+
+Demonstrates a version of `std::fill` that uses `__has_trivial_assign` to
+determine whether to use `memset` to optimise the fill operation
+(see [@../../libs/type_traits/examples/fill_example.cpp fill_example.cpp]):
+
+ //
+ // fill
+ // same as std::fill, but uses memset where appropriate
+ //
+ namespace detail{
+
+ template <typename I, typename T, bool b>
+ void do_fill(I first, I last, const T& val, const boost::__integral_constant<bool, b>&)
+ {
+ while(first != last)
+ {
+ *first = val;
+ ++first;
+ }
+ }
+
+ template <typename T>
+ void do_fill(T* first, T* last, const T& val, const boost::__true_type&)
+ {
+ std::memset(first, val, last-first);
+ }
+
+ }
+
+ template <class I, class T>
+ inline void fill(I first, I last, const T& val)
+ {
+ //
+ // We can do an optimised fill if T has a trivial assignment
+ // operator and if it's size is one:
+ //
+ typedef boost::__integral_constant<bool,
+ ::boost::__has_trivial_assign<T>::value && (sizeof(T) == 1)> truth_type;
+ detail::do_fill(first, last, val, truth_type());
+ }
+
+
+[endsect]
+
+[section:destruct An Example that Omits Destructor Calls For Types with Trivial Destructors]
+
+Demonstrates a simple algorithm that uses `__has_trivial_destruct` to
+determine whether to destructors need to be called
+(see [@../../libs/type_traits/examples/trivial_destructor_example.cpp trivial_destructor_example.cpp]):
+
+ //
+ // algorithm destroy_array:
+ // The reverse of std::unitialized_copy, takes a block of
+ // initialized memory and calls destructors on all objects therein.
+ //
+
+ namespace detail{
+
+ template <class T>
+ void do_destroy_array(T* first, T* last, const boost::__false_type&)
+ {
+ while(first != last)
+ {
+ first->~T();
+ ++first;
+ }
+ }
+
+ template <class T>
+ inline void do_destroy_array(T* first, T* last, const boost::__true_type&)
+ {
+ }
+
+ } // namespace detail
+
+ template <class T>
+ inline void destroy_array(T* p1, T* p2)
+ {
+ detail::do_destroy_array(p1, p2, ::boost::__has_trivial_destructor<T>());
+ }
+
+
+[endsect]
+
+[section:iter An improved Version of std::iter_swap]
+
+Demonstrates a version of `std::iter_swap` that use type traits to
+determine whether an it's arguments are proxying iterators or not,
+if they're not then it just does a `std::swap` of it's dereferenced
+arguments (the
+same as `std::iter_swap` does), however if they are proxying iterators
+then takes special care over the swap to ensure that the algorithm
+works correctly for both proxying iterators, and even iterators of
+different types
+(see [@../../libs/type_traits/examples/iter_swap_example.cpp iter_swap_example.cpp]):
+
+ //
+ // iter_swap:
+ // tests whether iterator is a proxying iterator or not, and
+ // uses optimal form accordingly:
+ //
+ namespace detail{
+
+ template <typename I>
+ static void do_swap(I one, I two, const boost::__false_type&)
+ {
+ typedef typename std::iterator_traits<I>::value_type v_t;
+ v_t v = *one;
+ *one = *two;
+ *two = v;
+ }
+ template <typename I>
+ static void do_swap(I one, I two, const boost::__true_type&)
+ {
+ using std::swap;
+ swap(*one, *two);
+ }
+
+ }
+
+ template <typename I1, typename I2>
+ inline void iter_swap(I1 one, I2 two)
+ {
+ //
+ // See is both arguments are non-proxying iterators,
+ // and if both iterator the same type:
+ //
+ typedef typename std::iterator_traits<I1>::reference r1_t;
+ typedef typename std::iterator_traits<I2>::reference r2_t;
+
+ typedef boost::__integral_constant<bool,
+ ::boost::__is_reference<r1_t>::value
+ && ::boost::__is_reference<r2_t>::value
+ && ::boost::__is_same<r1_t, r2_t>::value> truth_type;
+
+ detail::do_swap(one, two, truth_type());
+ }
+
+
+[endsect]
+
+[section:to_double Convert Numeric Types and Enums to double]
+
+Demonstrates a conversion of
+[@../../libs/numeric/conversion/doc/definitions.html#numtypes Numeric Types]
+and enum types to double:
+
+ template<class T>
+ inline double to_double(T const& value)
+ {
+ typedef typename boost::promote<T>::type promoted;
+ return boost::numeric::converter<double,promoted>::convert(value);
+ }
+
+[endsect]
+
+[endsect]

Added: trunk/libs/type_traits/doc/extent.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/extent.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,33 @@
+[section:extent extent]
+ template <class T, std::size_t N = 0>
+ struct extent : public __integral_constant<std::size_t, EXTENT(T,N)> {};
+
+__inherit Class template extent inherits from `__integral_constant<std::size_t, EXTENT(T,N)>`,
+where `EXTENT(T,N)` is the number of elements in the N'th array dimention of type `T`.
+
+If `T` is not an array type, or if `N > __rank<T>::value`, or if the N'th array bound
+is incomplete, then `EXTENT(T,N)` is zero.
+
+__header ` #include <boost/type_traits/extent.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`extent<int[1]>` inherits from `__integral_constant<std::size_t, 1>`.]
+
+[:`extent<double[2][3][4], 1>::type` is the type `__integral_constant<std::size_t, 3>`.]
+
+[:`extent<int[4]>::value` is an integral constant
+expression that evaluates to /4/.]
+
+[:`extent<int[][2]>::value` is an integral constant
+expression that evaluates to /0/.]
+
+[:`extent<int[][2], 1>::value` is an integral constant
+expression that evaluates to /2/.]
+
+[:`extent<int*>::value` is an integral constant
+expression that evaluates to /0/.]
+
+[:`extent<T>::value_type` is the type `std::size_t`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/floating_point_promotion.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/floating_point_promotion.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,29 @@
+[section:floating_point_promotion floating_point_promotion]
+
+ template <class T>
+ struct floating_point_promotion
+ {
+ typedef __below type;
+ };
+
+__type If floating point promotion can be applied to an rvalue of type `T`,
+then applies floating point promotion to `T` and keeps cv-qualifiers of `T`,
+otherwise leaves `T` unchanged.
+
+__std_ref 4.6.
+
+__header ` #include <boost/type_traits/floating_point_promotion.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`floating_point_promotion<float const>::type`][`double const`]]
+
+[[`floating_point_promotion<float&>::type`][`float&`]]
+
+[[`floating_point_promotion<short>::type`][`short`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/function_traits.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/function_traits.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,42 @@
+[section:function_traits function_traits]
+[def __argN '''arg<replaceable>N</replaceable>_type''']
+
+ template <class T>
+ struct function_traits
+ {
+ static const std::size_t arity = __below;
+ typedef __below result_type;
+ typedef __below __argN;
+ };
+
+The class template function_traits will only compile if:
+
+* The compiler supports partial specialization of class templates.
+* The template argument `T` is a /function type/, note that this ['[*is not]]
+the same thing as a /pointer to a function/.
+
+[table Function Traits Members
+[[Member] [Description]]
+[[`function_traits<T>::arity`]
+ [An integral constant expression that gives the number of arguments accepted by the function type `F`.]]
+[[`function_traits<T>::result_type`]
+ [The type returned by function type `F`.]]
+[[`function_traits<T>::__argN`]
+ [The '''<replaceable>N</replaceable>th''' argument type of function type `F`, where `1 <= N <= arity` of `F`.]]
+]
+
+[table Examples
+[[Expression] [Result]]
+[[`function_traits<void (void)>::arity`] [An integral constant expression that has the value 0.]]
+[[`function_traits<long (int)>::arity`] [An integral constant expression that has the value 1.]]
+[[`function_traits<long (int, long, double, void*)>::arity`] [An integral constant expression that has the value 4.]]
+[[`function_traits<void (void)>::result_type`] [The type `void`.]]
+[[`function_traits<long (int)>::result_type`] [The type `long`.]]
+[[`function_traits<long (int)>::arg1_type`] [The type `int`.]]
+[[`function_traits<long (int, long, double, void*)>::arg4_type`] [The type `void*`.]]
+[[`function_traits<long (int, long, double, void*)>::arg5_type`] [A compiler error: there is no `arg4_type` since there are only three arguments.]]
+[[`function_traits<long (*)(void)>::arity`] [A compiler error: argument type is a /function pointer/, and not a /function type/.]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/has_nothrow_assign.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/has_nothrow_assign.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,21 @@
+[section:has_nothrow_assign has_nothrow_assign]
+
+ template <class T>
+ struct has_nothrow_assign : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) type with a non-throwing assignment-operator
+then inherits from __true_type, otherwise inherits from __false_type. Type `T`
+must be a complete type.
+
+__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,
+`has_nothrow_assign` will never report that a class or struct has a
+non-throwing assignment-operator; this is always safe, if possibly sub-optimal.
+Currently (May 2005) only Visual C++ 8 has the necessary compiler support to ensure that this
+trait "just works".
+
+__header ` #include <boost/type_traits/has_nothrow_assign.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[endsect]

Added: trunk/libs/type_traits/doc/has_nothrow_constructor.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/has_nothrow_constructor.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,26 @@
+[section:has_nothrow_constructor has_nothrow_constructor]
+
+ template <class T>
+ struct has_nothrow_constructor : public __tof {};
+
+ template <class T>
+ struct has_nothrow_default_constructor : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) type with a non-throwing default-constructor
+then inherits from __true_type, otherwise inherits from __false_type. Type `T`
+must be a complete type.
+
+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,
+`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".
+
+__header ` #include <boost/type_traits/has_nothrow_constructor.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[endsect]

Added: trunk/libs/type_traits/doc/has_nothrow_copy.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/has_nothrow_copy.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,26 @@
+[section:has_nothrow_copy has_nothrow_copy]
+
+ template <class T>
+ struct has_nothrow_copy : public __tof {};
+
+ template <class T>
+ struct has_nothrow_copy_constructor : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) type with a non-throwing copy-constructor
+then inherits from __true_type, otherwise inherits from __false_type. Type `T`
+must be a complete type.
+
+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,
+`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".
+
+__header ` #include <boost/type_traits/has_nothrow_copy.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[endsect]

Added: trunk/libs/type_traits/doc/has_trivial_assign.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/has_trivial_assign.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,39 @@
+[section:has_trivial_assign has_trivial_assign]
+ template <class T>
+ struct has_trivial_assign : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) type with a trivial assignment-operator
+then inherits from __true_type, otherwise inherits from __false_type.
+
+If a type has a trivial assignment-operator then the operator has the same effect
+as copying the bits of one object to the other:
+calls to the operator can be safely replaced with a call to `memcpy`.
+
+__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,
+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.
+
+__std_ref 12.8p11.
+
+__header ` #include <boost/type_traits/has_trivial_assign.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`has_trivial_assign<int>` inherits from `__true_type`.]
+
+[:`has_trivial_assign<char*>::type` is the type `__true_type`.]
+
+[:`has_trivial_assign<int (*)(long)>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`has_trivial_assign<MyClass>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`has_trivial_assign<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/has_trivial_constructor.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/has_trivial_constructor.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,47 @@
+[section:has_trivial_constructor has_trivial_constructor]
+
+ template <class T>
+ struct has_trivial_constructor : public __tof {};
+
+ template <class T>
+ struct has_trivial_default_constructor : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) type with a trivial default-constructor
+then inherits from __true_type, otherwise inherits from __false_type.
+
+These two traits are synonyms for each other.
+
+If a type has a trivial default-constructor then the constructor have no effect:
+calls to the constructor can be safely omitted. Note that using meta-programming
+to omit a call to a single trivial-constructor call is of no benefit whatsoever.
+However, if loops and/or exception handling code can also be omitted, then some
+benefit in terms of code size and speed can be obtained.
+
+__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,
+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.
+
+__std_ref 12.1p6.
+
+__header ` #include <boost/type_traits/has_trivial_constructor.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`has_trivial_constructor<int>` inherits from `__true_type`.]
+
+[:`has_trivial_constructor<char*>::type` is the type `__true_type`.]
+
+[:`has_trivial_constructor<int (*)(long)>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`has_trivial_constructor<MyClass>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`has_trivial_constructor<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/has_trivial_copy.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/has_trivial_copy.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,45 @@
+[section:has_trivial_copy has_trivial_copy]
+
+ template <class T>
+ struct has_trivial_copy : public __tof {};
+
+ template <class T>
+ struct has_trivial_copy_constructor : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) type with a trivial copy-constructor
+then inherits from __true_type, otherwise inherits from __false_type.
+
+These two traits are synonyms for each other.
+
+If a type has a trivial copy-constructor then the constructor has the same effect
+as copying the bits of one object to the other:
+calls to the constructor can be safely replaced with a call to `memcpy`.
+
+__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,
+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.
+
+__std_ref 12.8p6.
+
+__header ` #include <boost/type_traits/has_trivial_copy.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`has_trivial_copy<int>` inherits from `__true_type`.]
+
+[:`has_trivial_copy<char*>::type` is the type `__true_type`.]
+
+[:`has_trivial_copy<int (*)(long)>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`has_trivial_copy<MyClass>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`has_trivial_copy<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/has_trivial_destructor.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/has_trivial_destructor.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,41 @@
+[section:has_trivial_destructor has_trivial_destructor]
+ template <class T>
+ struct has_trivial_destructor : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) type with a trivial destructor
+then inherits from __true_type, otherwise inherits from __false_type.
+
+If a type has a trivial destructor then the destructor has no effect:
+calls to the destructor can be safely omitted. Note that using meta-programming
+to omit a call to a single trivial-constructor call is of no benefit whatsoever.
+However, if loops and/or exception handling code can also be omitted, then some
+benefit in terms of code size and speed can be obtained.
+
+__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,
+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.
+
+__std_ref 12.4p3.
+
+__header ` #include <boost/type_traits/has_trivial_destructor.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`has_trivial_destructor<int>` inherits from `__true_type`.]
+
+[:`has_trivial_destructor<char*>::type` is the type `__true_type`.]
+
+[:`has_trivial_destructor<int (*)(long)>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`has_trivial_destructor<MyClass>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`has_trivial_destructor<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/has_virtual_destructor.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/has_virtual_destructor.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,20 @@
+[section:has_virtual_destructor has_virtual_destructor]
+ template <class T>
+ struct has_virtual_destructor : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) type with a virtual destructor
+then inherits from __true_type, otherwise inherits from __false_type.
+
+__compat This trait is provided for completeness, since it's part of the
+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 has the necessary __intrinsics.
+
+__std_ref 12.4.
+
+__header ` #include <boost/type_traits/has_virtual_destructor.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[endsect]

Added: trunk/libs/type_traits/doc/html/boost_typetraits/background.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/background.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,690 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Background and Tutorial</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="prev" href="intro.html" title="Introduction">
+<link rel="next" href="category.html" title="Type Traits by Category">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="intro.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="category.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_typetraits.background"></a> Background and Tutorial
+</h2></div></div></div>
+<p>
+ The following is an updated version of the article "C++ Type traits"
+ by John Maddock and Steve Cleary that appeared in the October 2000 issue of
+ Dr Dobb's Journal.
+ </p>
+<p>
+ Generic programming (writing code which works with any data type meeting a
+ set of requirements) has become the method of choice for providing reusable
+ code. However, there are times in generic programming when "generic"
+ just isn't good enough - sometimes the differences between types are too large
+ for an efficient generic implementation. This is when the traits technique
+ becomes important - by encapsulating those properties that need to be considered
+ on a type by type basis inside a traits class, we can minimize the amount of
+ code that has to differ from one type to another, and maximize the amount of
+ generic code.
+ </p>
+<p>
+ Consider an example: when working with character strings, one common operation
+ is to determine the length of a null terminated string. Clearly it's possible
+ to write generic code that can do this, but it turns out that there are much
+ more efficient methods available: for example, the C library functions <code class="computeroutput"><span class="identifier">strlen</span></code> and <code class="computeroutput"><span class="identifier">wcslen</span></code>
+ are usually written in assembler, and with suitable hardware support can be
+ considerably faster than a generic version written in C++. The authors of the
+ C++ standard library realized this, and abstracted the properties of <code class="computeroutput"><span class="keyword">char</span></code> and <code class="computeroutput"><span class="keyword">wchar_t</span></code>
+ into the class <code class="computeroutput"><span class="identifier">char_traits</span></code>.
+ Generic code that works with character strings can simply use <code class="computeroutput"><span class="identifier">char_traits</span><span class="special">&lt;&gt;::</span><span class="identifier">length</span></code> to determine the length of a null
+ terminated string, safe in the knowledge that specializations of <code class="computeroutput"><span class="identifier">char_traits</span></code> will use the most appropriate
+ method available to them.
+ </p>
+<a name="boost_typetraits.background.type_traits"></a><h5>
+<a name="id436196"></a>
+ Type Traits
+ </h5>
+<p>
+ Class <code class="computeroutput"><span class="identifier">char_traits</span></code> is a classic
+ example of a collection of type specific properties wrapped up in a single
+ class - what Nathan Myers termed a <span class="emphasis"><em>baggage class</em></span>[1]. In the Boost type-traits library,
+ we[2] have written a set of very
+ specific traits classes, each of which encapsulate a single trait from the
+ C++ type system; for example, is a type a pointer or a reference type? Or does
+ a type have a trivial constructor, or a const-qualifier? The type-traits classes
+ share a unified design: each class inherits from a the type true_type
+ if the type has the specified property and inherits from false_type
+ otherwise. As we will show, these classes can be used in generic programming
+ to determine the properties of a given type and introduce optimizations that
+ are appropriate for that case.
+ </p>
+<p>
+ The type-traits library also contains a set of classes that perform a specific
+ transformation on a type; for example, they can remove a top-level const or
+ volatile qualifier from a type. Each class that performs a transformation defines
+ a single typedef-member <code class="computeroutput"><span class="identifier">type</span></code>
+ that is the result of the transformation. All of the type-traits classes are
+ defined inside namespace <code class="computeroutput"><span class="identifier">boost</span></code>;
+ for brevity, namespace-qualification is omitted in most of the code samples
+ given.
+ </p>
+<a name="boost_typetraits.background.implementation"></a><h5>
+<a name="id436313"></a>
+ Implementation
+ </h5>
+<p>
+ There are far too many separate classes contained in the type-traits library
+ to give a full implementation here - see the source code in the Boost library
+ for the full details - however, most of the implementation is fairly repetitive
+ anyway, so here we will just give you a flavor for how some of the classes
+ are implemented. Beginning with possibly the simplest class in the library,
+ <code class="computeroutput"><span class="identifier">is_void</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code> inherits
+ from <code class="computeroutput">true_type</code>
+ only if <code class="computeroutput"><span class="identifier">T</span></code> is <code class="computeroutput"><span class="keyword">void</span></code>.
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_void <span class="special">:</span> <span class="keyword">public</span> false_type<span class="special">{};</span>
+
+<span class="keyword">template</span> <span class="special">&lt;&gt;</span>
+<span class="keyword">struct</span> is_void<span class="special">&lt;</span><span class="keyword">void</span><span class="special">&gt;</span> <span class="special">:</span> <span class="keyword">public</span> true_type<span class="special">{};</span>
+</pre>
+<p>
+ Here we define a primary version of the template class <code class="computeroutput">is_void</code>,
+ and provide a full-specialization when <code class="computeroutput"><span class="identifier">T</span></code>
+ is <code class="computeroutput"><span class="keyword">void</span></code>. While full specialization
+ of a template class is an important technique, sometimes we need a solution
+ that is halfway between a fully generic solution, and a full specialization.
+ This is exactly the situation for which the standards committee defined partial
+ template-class specialization. As an example, consider the class <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_pointer</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code>:
+ here we needed a primary version that handles all the cases where T is not
+ a pointer, and a partial specialization to handle all the cases where T is
+ a pointer:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_pointer <span class="special">:</span> <span class="keyword">public</span> false_type<span class="special">{};</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_pointer<span class="special">&lt;</span><span class="identifier">T</span><span class="special">*&gt;</span> <span class="special">:</span> <span class="keyword">public</span> true_type<span class="special">{};</span>
+</pre>
+<p>
+ The syntax for partial specialization is somewhat arcane and could easily occupy
+ an article in its own right; like full specialization, in order to write a
+ partial specialization for a class, you must first declare the primary template.
+ The partial specialization contains an extra &lt;...&gt; after the class name
+ that contains the partial specialization parameters; these define the types
+ that will bind to that partial specialization rather than the default template.
+ The rules for what can appear in a partial specialization are somewhat convoluted,
+ but as a rule of thumb if you can legally write two function overloads of the
+ form:
+ </p>
+<pre class="programlisting">
+<span class="keyword">void</span> <span class="identifier">foo</span><span class="special">(</span><span class="identifier">T</span><span class="special">);</span>
+<span class="keyword">void</span> <span class="identifier">foo</span><span class="special">(</span><span class="identifier">U</span><span class="special">);</span>
+</pre>
+<p>
+ Then you can also write a partial specialization of the form:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">c</span><span class="special">{</span> <span class="comment">/*details*/</span> <span class="special">};</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">c</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;{</span> <span class="comment">/*details*/</span> <span class="special">};</span>
+</pre>
+<p>
+ This rule is by no means foolproof, but it is reasonably simple to remember
+ and close enough to the actual rule to be useful for everyday use.
+ </p>
+<p>
+ As a more complex example of partial specialization consider the class <code class="computeroutput"><span class="identifier">remove_extent</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code>. This
+ class defines a single typedef-member <code class="computeroutput"><span class="identifier">type</span></code>
+ that is the same type as T but with any top-level array bounds removed; this
+ is an example of a traits class that performs a transformation on a type:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> remove_extent
+<span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> remove_extent<span class="special">&lt;</span><span class="identifier">T</span><span class="special">[</span><span class="identifier">N</span><span class="special">]&gt;</span>
+<span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+</pre>
+<p>
+ The aim of <code class="computeroutput">remove_extent</code>
+ is this: imagine a generic algorithm that is passed an array type as a template
+ parameter, <code class="computeroutput">remove_extent</code>
+ provides a means of determining the underlying type of the array. For example
+ <code class="computeroutput"><span class="identifier">remove_extent</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">[</span><span class="number">4</span><span class="special">][</span><span class="number">5</span><span class="special">]&gt;::</span><span class="identifier">type</span></code> would evaluate to the type <code class="computeroutput"><span class="keyword">int</span><span class="special">[</span><span class="number">5</span><span class="special">]</span></code>. This example also shows that the number of
+ template parameters in a partial specialization does not have to match the
+ number in the default template. However, the number of parameters that appear
+ after the class name do have to match the number and type of the parameters
+ in the default template.
+ </p>
+<a name="boost_typetraits.background.optimized_copy"></a><h5>
+<a name="id490225"></a>
+ Optimized copy
+ </h5>
+<p>
+ As an example of how the type traits classes can be used, consider the standard
+ library algorithm copy:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Iter1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Iter2</span><span class="special">&gt;</span>
+<span class="identifier">Iter2</span> <span class="identifier">copy</span><span class="special">(</span><span class="identifier">Iter1</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iter1</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">Iter2</span> <span class="identifier">out</span><span class="special">);</span>
+</pre>
+<p>
+ Obviously, there's no problem writing a generic version of copy that works
+ for all iterator types <code class="computeroutput"><span class="identifier">Iter1</span></code>
+ and <code class="computeroutput"><span class="identifier">Iter2</span></code>; however, there are
+ some circumstances when the copy operation can best be performed by a call
+ to <code class="computeroutput"><span class="identifier">memcpy</span></code>. In order to implement
+ copy in terms of <code class="computeroutput"><span class="identifier">memcpy</span></code> all
+ of the following conditions need to be met:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Both of the iterator types <code class="computeroutput"><span class="identifier">Iter1</span></code>
+ and <code class="computeroutput"><span class="identifier">Iter2</span></code> must be pointers.
+ </li>
+<li>
+ Both <code class="computeroutput"><span class="identifier">Iter1</span></code> and <code class="computeroutput"><span class="identifier">Iter2</span></code> must point to the same type - excluding
+ const and volatile-qualifiers.
+ </li>
+<li>
+ The type pointed to by <code class="computeroutput"><span class="identifier">Iter1</span></code>
+ must have a trivial assignment operator.
+ </li>
+</ul></div>
+<p>
+ By trivial assignment operator we mean that the type is either a scalar type[3] or:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ The type has no user defined assignment operator.
+ </li>
+<li>
+ The type does not have any data members that are references.
+ </li>
+<li>
+ All base classes, and all data member objects must have trivial assignment
+ operators.
+ </li>
+</ul></div>
+<p>
+ If all these conditions are met then a type can be copied using <code class="computeroutput"><span class="identifier">memcpy</span></code> rather than using a compiler generated
+ assignment operator. The type-traits library provides a class <code class="computeroutput">has_trivial_assign</code>,
+ such that <code class="computeroutput"><span class="identifier">has_trivial_assign</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is true only if T has a trivial assignment
+ operator. This class "just works" for scalar types, but has to be
+ explicitly specialised for class/struct types that also happen to have a trivial
+ assignment operator. In other words if has_trivial_assign
+ gives the wrong answer, it will give the "safe" wrong answer - that
+ trivial assignment is not allowable.
+ </p>
+<p>
+ The code for an optimized version of copy that uses <code class="computeroutput"><span class="identifier">memcpy</span></code>
+ where appropriate is given in <a href="examples/copy.html" title="An Optimized Version of std::copy">the
+ examples</a>. The code begins by defining a template function <code class="computeroutput"><span class="identifier">do_copy</span></code> that performs a "slow but safe"
+ copy. The last parameter passed to this function may be either a <code class="computeroutput">true_type</code>
+ or a <code class="computeroutput">false_type</code>.
+ Following that there is an overload of do<span class="underline">copy that
+ uses `memcpy`: this time the iterators are required to actually be pointers
+ to the same type, and the final parameter must be a `</span>_true_type<code class="computeroutput"><span class="special">.</span> <span class="identifier">Finally</span><span class="special">,</span> <span class="identifier">the</span> <span class="identifier">version</span>
+ <span class="identifier">of</span> </code>copy<code class="computeroutput"> <span class="identifier">calls</span>
+ </code>do<span class="underline">copy`, passing `</span>_has_trivial_assign&lt;value_type&gt;()`
+ as the final parameter: this will dispatch to the optimized version where appropriate,
+ otherwise it will call the "slow but safe version".
+ </p>
+<a name="boost_typetraits.background.was_it_worth_it_"></a><h5>
+<a name="id490768"></a>
+ Was it worth it?
+ </h5>
+<p>
+ It has often been repeated in these columns that "premature optimization
+ is the root of all evil" [4].
+ So the question must be asked: was our optimization premature? To put this
+ in perspective the timings for our version of copy compared a conventional
+ generic copy[5] are shown in table
+ 1.
+ </p>
+<p>
+ Clearly the optimization makes a difference in this case; but, to be fair,
+ the timings are loaded to exclude cache miss effects - without this accurate
+ comparison between algorithms becomes difficult. However, perhaps we can add
+ a couple of caveats to the premature optimization rule:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ If you use the right algorithm for the job in the first place then optimization
+ will not be required; in some cases, memcpy is the right algorithm.
+ </li>
+<li>
+ If a component is going to be reused in many places by many people then optimizations
+ may well be worthwhile where they would not be so for a single case - in
+ other words, the likelihood that the optimization will be absolutely necessary
+ somewhere, sometime is that much higher. Just as importantly the perceived
+ value of the stock implementation will be higher: there is no point standardizing
+ an algorithm if users reject it on the grounds that there are better, more
+ heavily optimized versions available.
+ </li>
+</ul></div>
+<div class="table">
+<a name="id490839"></a><p class="title"><b>Table 1.1. Time taken to copy 1000 elements using `copy&lt;const
+ T*, T*&gt;` (times in micro-seconds)</b></p>
+<div class="table-contents"><table class="table" summary="Time taken to copy 1000 elements using `copy&lt;const
+ T*, T*&gt;` (times in micro-seconds)">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Version
+ </p>
+ </th>
+<th>
+ <p>
+ T
+ </p>
+ </th>
+<th>
+ <p>
+ Time
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ "Optimized" copy
+ </p>
+ </td>
+<td>
+ <p>
+ char
+ </p>
+ </td>
+<td>
+ <p>
+ 0.99
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Conventional copy
+ </p>
+ </td>
+<td>
+ <p>
+ char
+ </p>
+ </td>
+<td>
+ <p>
+ 8.07
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ "Optimized" copy
+ </p>
+ </td>
+<td>
+ <p>
+ int
+ </p>
+ </td>
+<td>
+ <p>
+ 2.52
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Conventional copy
+ </p>
+ </td>
+<td>
+ <p>
+ int
+ </p>
+ </td>
+<td>
+ <p>
+ 8.02
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><a name="boost_typetraits.background.pair_of_references"></a><h5>
+<a name="id490996"></a>
+ Pair of References
+ </h5>
+<p>
+ The optimized copy example shows how type traits may be used to perform optimization
+ decisions at compile-time. Another important usage of type traits is to allow
+ code to compile that otherwise would not do so unless excessive partial specialization
+ is used. This is possible by delegating partial specialization to the type
+ traits classes. Our example for this form of usage is a pair that can hold
+ references [6].
+ </p>
+<p>
+ First, let us examine the definition of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code>, omitting
+ the comparison operators, default constructor, and template copy constructor
+ for simplicity:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">pair</span>
+<span class="special">{</span>
+<span class="keyword">typedef</span> <span class="identifier">T1</span> <span class="identifier">first_type</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">T2</span> <span class="identifier">second_type</span><span class="special">;</span>
+
+<span class="identifier">T1</span> <span class="identifier">first</span><span class="special">;</span>
+<span class="identifier">T2</span> <span class="identifier">second</span><span class="special">;</span>
+
+<span class="identifier">pair</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T1</span> <span class="special">&amp;</span> <span class="identifier">nfirst</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T2</span> <span class="special">&amp;</span> <span class="identifier">nsecond</span><span class="special">)</span>
+<span class="special">:</span><span class="identifier">first</span><span class="special">(</span><span class="identifier">nfirst</span><span class="special">),</span> <span class="identifier">second</span><span class="special">(</span><span class="identifier">nsecond</span><span class="special">)</span> <span class="special">{</span> <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Now, this "pair" cannot hold references as it currently stands, because
+ the constructor would require taking a reference to a reference, which is currently
+ illegal [7]. Let us consider what
+ the constructor's parameters would have to be in order to allow "pair"
+ to hold non-reference types, references, and constant references:
+ </p>
+<div class="table">
+<a name="id491359"></a><p class="title"><b>Table 1.2. Required Constructor Argument Types</b></p>
+<div class="table-contents"><table class="table" summary="Required Constructor Argument Types">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type of <code class="computeroutput"><span class="identifier">T1</span></code>
+ </p>
+ </th>
+<th>
+ <p>
+ Type of parameter to initializing constructor
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ T
+ </p>
+ </td>
+<td>
+ <p>
+ const T &amp;
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ T &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ T &amp;
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ const T &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ const T &amp;
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ A little familiarity with the type traits classes allows us to construct a
+ single mapping that allows us to determine the type of parameter from the type
+ of the contained class. The type traits classes provide a transformation add_reference, which
+ adds a reference to its type, unless it is already a reference.
+ </p>
+<div class="table">
+<a name="id491484"></a><p class="title"><b>Table 1.3. Using add_reference to synthesize the correct constructor
+ type</b></p>
+<div class="table-contents"><table class="table" summary="Using add_reference to synthesize the correct constructor
+ type">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type of <code class="computeroutput"><span class="identifier">T1</span></code>
+ </p>
+ </th>
+<th>
+ <p>
+ Type of <code class="computeroutput"><span class="keyword">const</span> <span class="identifier">T1</span></code>
+ </p>
+ </th>
+<th>
+ <p>
+ Type of <code class="computeroutput"><span class="identifier">add_reference</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="identifier">T1</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ T
+ </p>
+ </td>
+<td>
+ <p>
+ const T
+ </p>
+ </td>
+<td>
+ <p>
+ const T &amp;
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ T &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ T &amp; [8]
+ </p>
+ </td>
+<td>
+ <p>
+ T &amp;
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ const T &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ const T &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ const T &amp;
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ This allows us to build a primary template definition for <code class="computeroutput"><span class="identifier">pair</span></code>
+ that can contain non-reference types, reference types, and constant reference
+ types:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">pair</span>
+<span class="special">{</span>
+<span class="keyword">typedef</span> <span class="identifier">T1</span> <span class="identifier">first_type</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">T2</span> <span class="identifier">second_type</span><span class="special">;</span>
+
+<span class="identifier">T1</span> <span class="identifier">first</span><span class="special">;</span>
+<span class="identifier">T2</span> <span class="identifier">second</span><span class="special">;</span>
+
+<span class="identifier">pair</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span>add_reference<span class="special">&lt;</span><span class="keyword">const</span> <span class="identifier">T1</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">nfirst</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span>add_reference<span class="special">&lt;</span><span class="keyword">const</span> <span class="identifier">T2</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">nsecond</span><span class="special">)</span>
+<span class="special">:</span><span class="identifier">first</span><span class="special">(</span><span class="identifier">nfirst</span><span class="special">),</span> <span class="identifier">second</span><span class="special">(</span><span class="identifier">nsecond</span><span class="special">)</span> <span class="special">{</span> <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Add back in the standard comparison operators, default constructor, and template
+ copy constructor (which are all the same), and you have a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code> that
+ can hold reference types!
+ </p>
+<p>
+ This same extension could have been done using partial template specialization
+ of <code class="computeroutput"><span class="identifier">pair</span></code>, but to specialize
+ <code class="computeroutput"><span class="identifier">pair</span></code> in this way would require
+ three partial specializations, plus the primary template. Type traits allows
+ us to define a single primary template that adjusts itself auto-magically to
+ any of these partial specializations, instead of a brute-force partial specialization
+ approach. Using type traits in this fashion allows programmers to delegate
+ partial specialization to the type traits classes, resulting in code that is
+ easier to maintain and easier to understand.
+ </p>
+<a name="boost_typetraits.background.conclusion"></a><h5>
+<a name="id492106"></a>
+ Conclusion
+ </h5>
+<p>
+ We hope that in this article we have been able to give you some idea of what
+ type-traits are all about. A more complete listing of the available classes
+ are in the boost documentation, along with further examples using type traits.
+ Templates have enabled C++ uses to take the advantage of the code reuse that
+ generic programming brings; hopefully this article has shown that generic programming
+ does not have to sink to the lowest common denominator, and that templates
+ can be optimal as well as generic.
+ </p>
+<a name="boost_typetraits.background.acknowledgements"></a><h5>
+<a name="id492407"></a>
+ Acknowledgements
+ </h5>
+<p>
+ The authors would like to thank Beman Dawes and Howard Hinnant for their helpful
+ comments when preparing this article.
+ </p>
+<a name="background.references"></a><a name="boost_typetraits.background.references"></a><h5>
+<a name="id492441"></a>
+ References
+ </h5>
+<div class="orderedlist"><ol type="1">
+<li>
+ Nathan C. Myers, C++ Report, June 1995.
+ </li>
+<li>
+ The type traits library is based upon contributions by Steve Cleary, Beman
+ Dawes, Howard Hinnant and John Maddock: it can be found at www.boost.org.
+ </li>
+<li>
+ A scalar type is an arithmetic type (i.e. a built-in integer or floating
+ point type), an enumeration type, a pointer, a pointer to member, or a const-
+ or volatile-qualified version of one of these types.
+ </li>
+<li>
+ This quote is from Donald Knuth, ACM Computing Surveys, December 1974, pg
+ 268.
+ </li>
+<li>
+ The test code is available as part of the boost utility library (see algo_opt_examples.cpp),
+ the code was compiled with gcc 2.95 with all optimisations turned on, tests
+ were conducted on a 400MHz Pentium II machine running Microsoft Windows 98.
+ </li>
+<li>
+ John Maddock and Howard Hinnant have submitted a "compressed_pair"
+ library to Boost, which uses a technique similar to the one described here
+ to hold references. Their pair also uses type traits to determine if any
+ of the types are empty, and will derive instead of contain to conserve space
+ -- hence the name "compressed".
+ </li>
+<li>
+ This is actually an issue with the C++ Core Language Working Group (issue
+ #106), submitted by Bjarne Stroustrup. The tentative resolution is to allow
+ a "reference to a reference to T" to mean the same thing as a "reference
+ to T", but only in template instantiation, in a method similar to multiple
+ cv-qualifiers.
+ </li>
+<li>
+ For those of you who are wondering why this shouldn't be const-qualified,
+ remember that references are always implicitly constant (for example, you
+ can't re-assign a reference). Remember also that "const T &amp;"
+ is something completely different. For this reason, cv-qualifiers on template
+ type arguments that are references are ignored.
+ </li>
+</ol></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="intro.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="category.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/category.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/category.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,60 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Type Traits by Category</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="prev" href="background.html" title="Background and Tutorial">
+<link rel="next" href="category/value_traits.html" title="Type Traits that Describe the Properties of a Type">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="background.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="category/value_traits.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_typetraits.category"></a> Type Traits by Category
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="category/value_traits.html"> Type Traits
+ that Describe the Properties of a Type</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="category/value_traits/primary.html"> Categorizing
+ a Type</a></span></dt>
+<dt><span class="section"><a href="category/value_traits/properties.html">
+ General Type Properties</a></span></dt>
+<dt><span class="section"><a href="category/value_traits/relate.html"> Relationships
+ Between Two Types</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="category/transform.html"> Type Traits that
+ Transform One Type to Another</a></span></dt>
+<dt><span class="section"><a href="category/alignment.html"> Synthesizing Types
+ with Specific Alignments</a></span></dt>
+<dt><span class="section"><a href="category/function.html"> Decomposing Function
+ Types</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="background.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="category/value_traits.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/category/alignment.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/category/alignment.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,59 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Synthesizing Types with Specific Alignments</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../category.html" title="Type Traits by Category">
+<link rel="prev" href="transform.html" title="Type Traits that Transform One Type to Another">
+<link rel="next" href="function.html" title="Decomposing Function Types">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="transform.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../category.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="function.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.category.alignment"></a><a href="alignment.html" title="Synthesizing Types with Specific Alignments"> Synthesizing Types
+ with Specific Alignments</a>
+</h3></div></div></div>
+<p>
+ Some low level memory management routines need to synthesize a POD type with
+ specific alignment properties. The template <code class="computeroutput">type_with_alignment</code>
+ finds the smallest type with a specified alignment, while template <code class="computeroutput">aligned_storage</code>
+ creates a type with a specific size and alignment.
+ </p>
+<p>
+ <span class="bold"><strong>Synopsis</strong></span>
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Align</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> type_with_alignment<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Size</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Align</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> aligned_storage<span class="special">;</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="transform.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../category.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="function.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/category/background.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/category/background.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,699 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Background and Tutorial</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../category.html" title="Type Traits by Category">
+<link rel="prev" href="../category.html" title="Type Traits by Category">
+<link rel="next" href="value_traits.html" title="Type Traits that Describe the Properties of a Type">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../category.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../category.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="value_traits.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.category.background"></a><a href="background.html" title="Background and Tutorial"> Background and
+ Tutorial</a>
+</h3></div></div></div>
+<p>
+ The following is an updated version of the article "C++ Type traits"
+ by John Maddock and Steve Cleary that appeared in the October 2000 issue
+ of Dr Dobb's Journal.
+ </p>
+<p>
+ Generic programming (writing code which works with any data type meeting
+ a set of requirements) has become the method of choice for providing reusable
+ code. However, there are times in generic programming when "generic"
+ just isn't good enough - sometimes the differences between types are too
+ large for an efficient generic implementation. This is when the traits technique
+ becomes important - by encapsulating those properties that need to be considered
+ on a type by type basis inside a traits class, we can minimize the amount
+ of code that has to differ from one type to another, and maximize the amount
+ of generic code.
+ </p>
+<p>
+ Consider an example: when working with character strings, one common operation
+ is to determine the length of a null terminated string. Clearly it's possible
+ to write generic code that can do this, but it turns out that there are much
+ more efficient methods available: for example, the C library functions <code class="computeroutput"><span class="identifier">strlen</span></code> and <code class="computeroutput"><span class="identifier">wcslen</span></code>
+ are usually written in assembler, and with suitable hardware support can
+ be considerably faster than a generic version written in C++. The authors
+ of the C++ standard library realized this, and abstracted the properties
+ of <code class="computeroutput"><span class="keyword">char</span></code> and <code class="computeroutput"><span class="keyword">wchar_t</span></code>
+ into the class <code class="computeroutput"><span class="identifier">char_traits</span></code>.
+ Generic code that works with character strings can simply use <code class="computeroutput"><span class="identifier">char_traits</span><span class="special">&lt;&gt;::</span><span class="identifier">length</span></code> to determine the length of a null
+ terminated string, safe in the knowledge that specializations of <code class="computeroutput"><span class="identifier">char_traits</span></code> will use the most appropriate
+ method available to them.
+ </p>
+<a name="boost_typetraits.category.background.type_traits"></a><h5>
+<a name="id437674"></a>
+ Type Traits
+ </h5>
+<p>
+ Class <code class="computeroutput"><span class="identifier">char_traits</span></code> is a classic
+ example of a collection of type specific properties wrapped up in a single
+ class - what Nathan Myers termed a <span class="emphasis"><em>baggage class</em></span>[1]. In the Boost type-traits library,
+ we[2] have written a set of
+ very specific traits classes, each of which encapsulate a single trait from
+ the C++ type system; for example, is a type a pointer or a reference type?
+ Or does a type have a trivial constructor, or a const-qualifier? The type-traits
+ classes share a unified design: each class inherits from a the type true_type if
+ the type has the specified property and inherits from false_type
+ otherwise. As we will show, these classes can be used in generic programming
+ to determine the properties of a given type and introduce optimizations that
+ are appropriate for that case.
+ </p>
+<p>
+ The type-traits library also contains a set of classes that perform a specific
+ transformation on a type; for example, they can remove a top-level const
+ or volatile qualifier from a type. Each class that performs a transformation
+ defines a single typedef-member <code class="computeroutput"><span class="identifier">type</span></code>
+ that is the result of the transformation. All of the type-traits classes
+ are defined inside namespace <code class="computeroutput"><span class="identifier">boost</span></code>;
+ for brevity, namespace-qualification is omitted in most of the code samples
+ given.
+ </p>
+<a name="boost_typetraits.category.background.implementation"></a><h5>
+<a name="id437797"></a>
+ Implementation
+ </h5>
+<p>
+ There are far too many separate classes contained in the type-traits library
+ to give a full implementation here - see the source code in the Boost library
+ for the full details - however, most of the implementation is fairly repetitive
+ anyway, so here we will just give you a flavor for how some of the classes
+ are implemented. Beginning with possibly the simplest class in the library,
+ <code class="computeroutput"><span class="identifier">is_void</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code> inherits
+ from <code class="computeroutput">true_type</code>
+ only if <code class="computeroutput"><span class="identifier">T</span></code> is <code class="computeroutput"><span class="keyword">void</span></code>.
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_void <span class="special">:</span> <span class="keyword">public</span> false_type<span class="special">{};</span>
+
+<span class="keyword">template</span> <span class="special">&lt;&gt;</span>
+<span class="keyword">struct</span> is_void<span class="special">&lt;</span><span class="keyword">void</span><span class="special">&gt;</span> <span class="special">:</span> <span class="keyword">public</span> true_type<span class="special">{};</span>
+</pre>
+<p>
+ Here we define a primary version of the template class <code class="computeroutput">is_void</code>,
+ and provide a full-specialization when <code class="computeroutput"><span class="identifier">T</span></code>
+ is <code class="computeroutput"><span class="keyword">void</span></code>. While full specialization
+ of a template class is an important technique, sometimes we need a solution
+ that is halfway between a fully generic solution, and a full specialization.
+ This is exactly the situation for which the standards committee defined partial
+ template-class specialization. As an example, consider the class <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_pointer</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code>:
+ here we needed a primary version that handles all the cases where T is not
+ a pointer, and a partial specialization to handle all the cases where T is
+ a pointer:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_pointer <span class="special">:</span> <span class="keyword">public</span> false_type<span class="special">{};</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_pointer<span class="special">&lt;</span><span class="identifier">T</span><span class="special">*&gt;</span> <span class="special">:</span> <span class="keyword">public</span> true_type<span class="special">{};</span>
+</pre>
+<p>
+ The syntax for partial specialization is somewhat arcane and could easily
+ occupy an article in its own right; like full specialization, in order to
+ write a partial specialization for a class, you must first declare the primary
+ template. The partial specialization contains an extra &lt;...&gt; after
+ the class name that contains the partial specialization parameters; these
+ define the types that will bind to that partial specialization rather than
+ the default template. The rules for what can appear in a partial specialization
+ are somewhat convoluted, but as a rule of thumb if you can legally write
+ two function overloads of the form:
+ </p>
+<pre class="programlisting">
+<span class="keyword">void</span> <span class="identifier">foo</span><span class="special">(</span><span class="identifier">T</span><span class="special">);</span>
+<span class="keyword">void</span> <span class="identifier">foo</span><span class="special">(</span><span class="identifier">U</span><span class="special">);</span>
+</pre>
+<p>
+ Then you can also write a partial specialization of the form:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">c</span><span class="special">{</span> <span class="comment">/*details*/</span> <span class="special">};</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">c</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;{</span> <span class="comment">/*details*/</span> <span class="special">};</span>
+</pre>
+<p>
+ This rule is by no means foolproof, but it is reasonably simple to remember
+ and close enough to the actual rule to be useful for everyday use.
+ </p>
+<p>
+ As a more complex example of partial specialization consider the class <code class="computeroutput"><span class="identifier">remove_extent</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code>.
+ This class defines a single typedef-member <code class="computeroutput"><span class="identifier">type</span></code>
+ that is the same type as T but with any top-level array bounds removed; this
+ is an example of a traits class that performs a transformation on a type:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> remove_extent
+<span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> remove_extent<span class="special">&lt;</span><span class="identifier">T</span><span class="special">[</span><span class="identifier">N</span><span class="special">]&gt;</span>
+<span class="special">{</span> <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">type</span><span class="special">;</span> <span class="special">};</span>
+</pre>
+<p>
+ The aim of <code class="computeroutput">remove_extent</code>
+ is this: imagine a generic algorithm that is passed an array type as a template
+ parameter, <code class="computeroutput">remove_extent</code>
+ provides a means of determining the underlying type of the array. For example
+ <code class="computeroutput"><span class="identifier">remove_extent</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">[</span><span class="number">4</span><span class="special">][</span><span class="number">5</span><span class="special">]&gt;::</span><span class="identifier">type</span></code> would evaluate to the type <code class="computeroutput"><span class="keyword">int</span><span class="special">[</span><span class="number">5</span><span class="special">]</span></code>. This example also shows that the number
+ of template parameters in a partial specialization does not have to match
+ the number in the default template. However, the number of parameters that
+ appear after the class name do have to match the number and type of the parameters
+ in the default template.
+ </p>
+<a name="boost_typetraits.category.background.optimized_copy"></a><h5>
+<a name="id490244"></a>
+ <a href="background.html#boost_typetraits.category.background.optimized_copy">Optimized
+ copy</a>
+ </h5>
+<p>
+ As an example of how the type traits classes can be used, consider the standard
+ library algorithm copy:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Iter1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Iter2</span><span class="special">&gt;</span>
+<span class="identifier">Iter2</span> <span class="identifier">copy</span><span class="special">(</span><span class="identifier">Iter1</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iter1</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">Iter2</span> <span class="identifier">out</span><span class="special">);</span>
+</pre>
+<p>
+ Obviously, there's no problem writing a generic version of copy that works
+ for all iterator types <code class="computeroutput"><span class="identifier">Iter1</span></code>
+ and <code class="computeroutput"><span class="identifier">Iter2</span></code>; however, there
+ are some circumstances when the copy operation can best be performed by a
+ call to <code class="computeroutput"><span class="identifier">memcpy</span></code>. In order
+ to implement copy in terms of <code class="computeroutput"><span class="identifier">memcpy</span></code>
+ all of the following conditions need to be met:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ Both of the iterator types <code class="computeroutput"><span class="identifier">Iter1</span></code>
+ and <code class="computeroutput"><span class="identifier">Iter2</span></code> must be pointers.
+ </li>
+<li>
+ Both <code class="computeroutput"><span class="identifier">Iter1</span></code> and <code class="computeroutput"><span class="identifier">Iter2</span></code> must point to the same type - excluding
+ const and volatile-qualifiers.
+ </li>
+<li>
+ The type pointed to by <code class="computeroutput"><span class="identifier">Iter1</span></code>
+ must have a trivial assignment operator.
+ </li>
+</ul></div>
+<p>
+ By trivial assignment operator we mean that the type is either a scalar type[3] or:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ The type has no user defined assignment operator.
+ </li>
+<li>
+ The type does not have any data members that are references.
+ </li>
+<li>
+ All base classes, and all data member objects must have trivial assignment
+ operators.
+ </li>
+</ul></div>
+<p>
+ If all these conditions are met then a type can be copied using <code class="computeroutput"><span class="identifier">memcpy</span></code> rather than using a compiler generated
+ assignment operator. The type-traits library provides a class <code class="computeroutput">has_trivial_assign</code>,
+ such that <code class="computeroutput"><span class="identifier">has_trivial_assign</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is true only if T has a trivial assignment
+ operator. This class "just works" for scalar types, but has to
+ be explicitly specialised for class/struct types that also happen to have
+ a trivial assignment operator. In other words if has_trivial_assign
+ gives the wrong answer, it will give the "safe" wrong answer -
+ that trivial assignment is not allowable.
+ </p>
+<p>
+ The code for an optimized version of copy that uses <code class="computeroutput"><span class="identifier">memcpy</span></code>
+ where appropriate is given in the examples.
+ The code begins by defining a template function <code class="computeroutput"><span class="identifier">do_copy</span></code>
+ that performs a "slow but safe" copy. The last parameter passed
+ to this function may be either a <code class="computeroutput">true_type</code>
+ or a <code class="computeroutput">false_type</code>.
+ Following that there is an overload of do<span class="underline">copy
+ that uses `memcpy`: this time the iterators are required to actually be pointers
+ to the same type, and the final parameter must be a `</span>_true_type<code class="computeroutput"><span class="special">.</span> <span class="identifier">Finally</span><span class="special">,</span> <span class="identifier">the</span> <span class="identifier">version</span> <span class="identifier">of</span>
+ </code>copy<code class="computeroutput"> <span class="identifier">calls</span> </code>do<span class="underline">copy`, passing `</span>_has_trivial_assign&lt;value_type&gt;()`
+ as the final parameter: this will dispatch to the optimized version where
+ appropriate, otherwise it will call the "slow but safe version".
+ </p>
+<a name="boost_typetraits.category.background.was_it_worth_it_"></a><h5>
+<a name="id490786"></a>
+ <a href="background.html#boost_typetraits.category.background.was_it_worth_it_">Was
+ it worth it?</a>
+ </h5>
+<p>
+ It has often been repeated in these columns that "premature optimization
+ is the root of all evil" [4].
+ So the question must be asked: was our optimization premature? To put this
+ in perspective the timings for our version of copy compared a conventional
+ generic copy[5] are shown in
+ table 1.
+ </p>
+<p>
+ Clearly the optimization makes a difference in this case; but, to be fair,
+ the timings are loaded to exclude cache miss effects - without this accurate
+ comparison between algorithms becomes difficult. However, perhaps we can
+ add a couple of caveats to the premature optimization rule:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ If you use the right algorithm for the job in the first place then optimization
+ will not be required; in some cases, memcpy is the right algorithm.
+ </li>
+<li>
+ If a component is going to be reused in many places by many people then
+ optimizations may well be worthwhile where they would not be so for a single
+ case - in other words, the likelihood that the optimization will be absolutely
+ necessary somewhere, sometime is that much higher. Just as importantly
+ the perceived value of the stock implementation will be higher: there is
+ no point standardizing an algorithm if users reject it on the grounds that
+ there are better, more heavily optimized versions available.
+ </li>
+</ul></div>
+<div class="table">
+<a name="id490853"></a><p class="title"><b>Table 1.1. Time taken to copy 1000 elements using `copy&lt;const
+ T*, T*&gt;` (times in micro-seconds)</b></p>
+<div class="table-contents"><table class="table" summary="Time taken to copy 1000 elements using `copy&lt;const
+ T*, T*&gt;` (times in micro-seconds)">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Version
+ </p>
+ </th>
+<th>
+ <p>
+ T
+ </p>
+ </th>
+<th>
+ <p>
+ Time
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ "Optimized" copy
+ </p>
+ </td>
+<td>
+ <p>
+ char
+ </p>
+ </td>
+<td>
+ <p>
+ 0.99
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Conventional copy
+ </p>
+ </td>
+<td>
+ <p>
+ char
+ </p>
+ </td>
+<td>
+ <p>
+ 8.07
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ "Optimized" copy
+ </p>
+ </td>
+<td>
+ <p>
+ int
+ </p>
+ </td>
+<td>
+ <p>
+ 2.52
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Conventional copy
+ </p>
+ </td>
+<td>
+ <p>
+ int
+ </p>
+ </td>
+<td>
+ <p>
+ 8.02
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><a name="boost_typetraits.category.background.pair_of_references"></a><h5>
+<a name="id491010"></a>
+ <a href="background.html#boost_typetraits.category.background.pair_of_references">Pair
+ of References</a>
+ </h5>
+<p>
+ The optimized copy example shows how type traits may be used to perform optimization
+ decisions at compile-time. Another important usage of type traits is to allow
+ code to compile that otherwise would not do so unless excessive partial specialization
+ is used. This is possible by delegating partial specialization to the type
+ traits classes. Our example for this form of usage is a pair that can hold
+ references [6].
+ </p>
+<p>
+ First, let us examine the definition of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code>,
+ omitting the comparison operators, default constructor, and template copy
+ constructor for simplicity:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">pair</span>
+<span class="special">{</span>
+<span class="keyword">typedef</span> <span class="identifier">T1</span> <span class="identifier">first_type</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">T2</span> <span class="identifier">second_type</span><span class="special">;</span>
+
+<span class="identifier">T1</span> <span class="identifier">first</span><span class="special">;</span>
+<span class="identifier">T2</span> <span class="identifier">second</span><span class="special">;</span>
+
+<span class="identifier">pair</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T1</span> <span class="special">&amp;</span> <span class="identifier">nfirst</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T2</span> <span class="special">&amp;</span> <span class="identifier">nsecond</span><span class="special">)</span>
+<span class="special">:</span><span class="identifier">first</span><span class="special">(</span><span class="identifier">nfirst</span><span class="special">),</span> <span class="identifier">second</span><span class="special">(</span><span class="identifier">nsecond</span><span class="special">)</span> <span class="special">{</span> <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Now, this "pair" cannot hold references as it currently stands,
+ because the constructor would require taking a reference to a reference,
+ which is currently illegal [7].
+ Let us consider what the constructor's parameters would have to be in order
+ to allow "pair" to hold non-reference types, references, and constant
+ references:
+ </p>
+<div class="table">
+<a name="id491374"></a><p class="title"><b>Table 1.2. Required Constructor Argument Types</b></p>
+<div class="table-contents"><table class="table" summary="Required Constructor Argument Types">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type of <code class="computeroutput"><span class="identifier">T1</span></code>
+ </p>
+ </th>
+<th>
+ <p>
+ Type of parameter to initializing constructor
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ T
+ </p>
+ </td>
+<td>
+ <p>
+ const T &amp;
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ T &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ T &amp;
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ const T &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ const T &amp;
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ A little familiarity with the type traits classes allows us to construct
+ a single mapping that allows us to determine the type of parameter from the
+ type of the contained class. The type traits classes provide a transformation
+ add_reference,
+ which adds a reference to its type, unless it is already a reference.
+ </p>
+<div class="table">
+<a name="id491508"></a><p class="title"><b>Table 1.3. Using add_reference to synthesize the correct constructor
+ type</b></p>
+<div class="table-contents"><table class="table" summary="Using add_reference to synthesize the correct constructor
+ type">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Type of <code class="computeroutput"><span class="identifier">T1</span></code>
+ </p>
+ </th>
+<th>
+ <p>
+ Type of <code class="computeroutput"><span class="keyword">const</span> <span class="identifier">T1</span></code>
+ </p>
+ </th>
+<th>
+ <p>
+ Type of <code class="computeroutput"><span class="identifier">add_reference</span><span class="special">&lt;</span><span class="keyword">const</span>
+ <span class="identifier">T1</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ T
+ </p>
+ </td>
+<td>
+ <p>
+ const T
+ </p>
+ </td>
+<td>
+ <p>
+ const T &amp;
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ T &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ T &amp; [8]
+ </p>
+ </td>
+<td>
+ <p>
+ T &amp;
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ const T &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ const T &amp;
+ </p>
+ </td>
+<td>
+ <p>
+ const T &amp;
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ This allows us to build a primary template definition for <code class="computeroutput"><span class="identifier">pair</span></code>
+ that can contain non-reference types, reference types, and constant reference
+ types:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">pair</span>
+<span class="special">{</span>
+<span class="keyword">typedef</span> <span class="identifier">T1</span> <span class="identifier">first_type</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">T2</span> <span class="identifier">second_type</span><span class="special">;</span>
+
+<span class="identifier">T1</span> <span class="identifier">first</span><span class="special">;</span>
+<span class="identifier">T2</span> <span class="identifier">second</span><span class="special">;</span>
+
+<span class="identifier">pair</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span>add_reference<span class="special">&lt;</span><span class="keyword">const</span> <span class="identifier">T1</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">nfirst</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span>add_reference<span class="special">&lt;</span><span class="keyword">const</span> <span class="identifier">T2</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">nsecond</span><span class="special">)</span>
+<span class="special">:</span><span class="identifier">first</span><span class="special">(</span><span class="identifier">nfirst</span><span class="special">),</span> <span class="identifier">second</span><span class="special">(</span><span class="identifier">nsecond</span><span class="special">)</span> <span class="special">{</span> <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Add back in the standard comparison operators, default constructor, and template
+ copy constructor (which are all the same), and you have a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code>
+ that can hold reference types!
+ </p>
+<p>
+ This same extension could have been done using partial template specialization
+ of <code class="computeroutput"><span class="identifier">pair</span></code>, but to specialize
+ <code class="computeroutput"><span class="identifier">pair</span></code> in this way would require
+ three partial specializations, plus the primary template. Type traits allows
+ us to define a single primary template that adjusts itself auto-magically
+ to any of these partial specializations, instead of a brute-force partial
+ specialization approach. Using type traits in this fashion allows programmers
+ to delegate partial specialization to the type traits classes, resulting
+ in code that is easier to maintain and easier to understand.
+ </p>
+<a name="boost_typetraits.category.background.conclusion"></a><h5>
+<a name="id492124"></a>
+ Conclusion
+ </h5>
+<p>
+ We hope that in this article we have been able to give you some idea of what
+ type-traits are all about. A more complete listing of the available classes
+ are in the boost documentation, along with further examples using type traits.
+ Templates have enabled C++ uses to take the advantage of the code reuse that
+ generic programming brings; hopefully this article has shown that generic
+ programming does not have to sink to the lowest common denominator, and that
+ templates can be optimal as well as generic.
+ </p>
+<a name="boost_typetraits.category.background.acknowledgements"></a><h5>
+<a name="id492161"></a>
+ Acknowledgements
+ </h5>
+<p>
+ The authors would like to thank Beman Dawes and Howard Hinnant for their
+ helpful comments when preparing this article.
+ </p>
+<a name="boost_typetraits.category.background.references"></a><h5>
+<a name="id492191"></a>
+ References
+ </h5>
+<div class="orderedlist"><ol type="1">
+<li>
+ Nathan C. Myers, C++ Report, June 1995.
+ </li>
+<li>
+ The type traits library is based upon contributions by Steve Cleary, Beman
+ Dawes, Howard Hinnant and John Maddock: it can be found at www.boost.org.
+ </li>
+<li>
+ A scalar type is an arithmetic type (i.e. a built-in integer or floating
+ point type), an enumeration type, a pointer, a pointer to member, or a
+ const- or volatile-qualified version of one of these types.
+ </li>
+<li>
+ This quote is from Donald Knuth, ACM Computing Surveys, December 1974,
+ pg 268.
+ </li>
+<li>
+ The test code is available as part of the boost utility library (see algo_opt_examples.cpp),
+ the code was compiled with gcc 2.95 with all optimisations turned on, tests
+ were conducted on a 400MHz Pentium II machine running Microsoft Windows
+ 98.
+ </li>
+<li>
+ John Maddock and Howard Hinnant have submitted a "compressed_pair"
+ library to Boost, which uses a technique similar to the one described here
+ to hold references. Their pair also uses type traits to determine if any
+ of the types are empty, and will derive instead of contain to conserve
+ space -- hence the name "compressed".
+ </li>
+<li>
+ This is actually an issue with the C++ Core Language Working Group (issue
+ #106), submitted by Bjarne Stroustrup. The tentative resolution is to allow
+ a "reference to a reference to T" to mean the same thing as a
+ "reference to T", but only in template instantiation, in a method
+ similar to multiple cv-qualifiers.
+ </li>
+<li>
+ For those of you who are wondering why this shouldn't be const-qualified,
+ remember that references are always implicitly constant (for example, you
+ can't re-assign a reference). Remember also that "const T &amp;"
+ is something completely different. For this reason, cv-qualifiers on template
+ type arguments that are references are ignored.
+ </li>
+</ol></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../category.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../category.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="value_traits.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/category/function.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/category/function.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Decomposing Function Types</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../category.html" title="Type Traits by Category">
+<link rel="prev" href="alignment.html" title="Synthesizing Types with Specific Alignments">
+<link rel="next" href="../user_defined.html" title="User Defined Specializations">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="alignment.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../category.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../user_defined.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.category.function"></a><a href="function.html" title="Decomposing Function Types"> Decomposing Function
+ Types</a>
+</h3></div></div></div>
+<p>
+ The class template function_traits
+ extracts information from function types (see also is_function).
+ This traits class allows you to tell how many arguments a function takes,
+ what those argument types are, and what the return type is.
+ </p>
+<p>
+ <span class="bold"><strong>Synopsis</strong></span>
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Align</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> function_traits<span class="special">;</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="alignment.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../category.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../user_defined.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/category/transform.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/category/transform.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,165 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Type Traits that Transform One Type to Another</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../category.html" title="Type Traits by Category">
+<link rel="prev" href="value_traits/relate.html" title="Relationships Between Two Types">
+<link rel="next" href="alignment.html" title="Synthesizing Types with Specific Alignments">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="value_traits/relate.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../category.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="alignment.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.category.transform"></a><a href="transform.html" title="Type Traits that Transform One Type to Another"> Type Traits that
+ Transform One Type to Another</a>
+</h3></div></div></div>
+<p>
+ The following templates transform one type to another, based upon some well-defined
+ rule. Each template has a single member called <code class="computeroutput"><span class="identifier">type</span></code>
+ that is the result of applying the transformation to the template argument
+ <code class="computeroutput"><span class="identifier">T</span></code>.
+ </p>
+<p>
+ <span class="bold"><strong>Synopsis:</strong></span>
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> add_const<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> add_cv<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> add_pointer<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> add_reference<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> add_volatile<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> decay<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> floating_point_promotion<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> integral_promotion<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> make_signed<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> make_unsigned<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> promote<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> remove_all_extents<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> remove_const<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> remove_cv<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> remove_extent<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> remove_pointer<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> remove_reference<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> remove_volatile<span class="special">;</span>
+</pre>
+<a name="boost_typetraits.category.transform.broken_compiler_workarounds_"></a><h5>
+<a name="id496256"></a>
+ <a href="transform.html#boost_typetraits.category.transform.broken_compiler_workarounds_">Broken
+ Compiler Workarounds:</a>
+ </h5>
+<p>
+ For all of these templates support for partial specialization of class templates
+ is required to correctly implement the transformation. On the other hand,
+ practice shows that many of the templates from this category are very useful,
+ and often essential for implementing some generic libraries. Lack of these
+ templates is often one of the major limiting factors in porting those libraries
+ to compilers that do not yet support this language feature. As some of these
+ compilers are going to be around for a while, and at least one of them is
+ very wide-spread, it was decided that the library should provide workarounds
+ where possible.
+ </p>
+<p>
+ The basic idea behind the workaround is to manually define full specializations
+ of all type transformation templates for all fundamental types, and all their
+ 1st and 2nd rank cv-[un]qualified derivative pointer types, and to provide
+ a user-level macro that will define all the explicit specializations needed
+ for any user-defined type T.
+ </p>
+<p>
+ The first part guarantees the successful compilation of something like this:
+ </p>
+<pre class="programlisting">
+<span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">((</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">,</span> <span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">));</span>
+<span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">((</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">,</span> <span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">));</span>
+<span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">((</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="keyword">char</span> <span class="keyword">volatile</span><span class="special">,</span> <span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="keyword">char</span> <span class="keyword">volatile</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">));</span>
+<span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">((</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="keyword">char</span> <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">,</span> <span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="keyword">char</span> <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">));</span>
+<span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">((</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">*,</span> <span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">*&amp;&gt;::</span><span class="identifier">type</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">));</span>
+<span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">((</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*,</span> <span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*&amp;&gt;::</span><span class="identifier">type</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">));</span>
+<span class="special">...</span>
+<span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">((</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="keyword">char</span> <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">*</span> <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">*</span> <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">,</span> <span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="keyword">char</span> <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">*</span> <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">*</span> <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span><span class="special">&gt;::</span><span class="identifi
er">value</span><span class="special">));</span>
+</pre>
+<p>
+ and the second part provides the library's users with a mechanism to make
+ the above code work not only for <code class="computeroutput"><span class="keyword">char</span></code>,
+ <code class="computeroutput"><span class="keyword">int</span></code> or other built-in type,
+ but for their own types as well:
+ </p>
+<pre class="programlisting">
+<span class="keyword">namespace</span> <span class="identifier">myspace</span><span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">MyClass</span> <span class="special">{};</span>
+<span class="special">}</span>
+<span class="comment">// declare this at global scope:
+</span><span class="identifier">BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION</span><span class="special">(</span><span class="identifier">myspace</span><span class="special">::</span><span class="identifier">MyClass</span><span class="special">)</span>
+<span class="comment">// transformations on myspace::MyClass now work:
+</span><span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">((</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="identifier">myspace</span><span class="special">::</span><span class="identifier">MyClass</span><span class="special">,</span> <span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="identifier">myspace</span><span class="special">::</span><span class="identifier">MyClass</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">));</span>
+<span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">((</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="identifier">myspace</span><span class="special">::</span><span class="identifier">MyClass</span><span class="special">,</span> <span class="identifier">remove_const</span><span class="special">&lt;</span><span class="identifier">myspace</span><span class="special">::</span><span class="identifier">MyClass</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">));</span>
+<span class="comment">// etc.
+</span></pre>
+<p>
+ Note that the macro BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION evaluates
+ to nothing on those compilers that <span class="bold"><strong>do</strong></span> support
+ partial specialization.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="value_traits/relate.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../category.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="alignment.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/category/value_traits.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/category/value_traits.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Type Traits that Describe the Properties of a Type</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../category.html" title="Type Traits by Category">
+<link rel="prev" href="../category.html" title="Type Traits by Category">
+<link rel="next" href="value_traits/primary.html" title="Categorizing a Type">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../category.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../category.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="value_traits/primary.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.category.value_traits"></a><a href="value_traits.html" title="Type Traits that Describe the Properties of a Type"> Type Traits
+ that Describe the Properties of a Type</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="value_traits/primary.html"> Categorizing
+ a Type</a></span></dt>
+<dt><span class="section"><a href="value_traits/properties.html">
+ General Type Properties</a></span></dt>
+<dt><span class="section"><a href="value_traits/relate.html"> Relationships
+ Between Two Types</a></span></dt>
+</dl></div>
+<p>
+ These traits are all <span class="emphasis"><em>value traits</em></span>, which is to say the
+ traits classes all inherit from integral_constant,
+ and are used to access some numerical property of a type. Often this is a
+ simple true or false Boolean value, but in a few cases may be some other
+ integer value (for example when dealing with type alignments, or array bounds:
+ see <code class="computeroutput">alignment_of</code>,
+ <code class="computeroutput">rank</code>
+ and <code class="computeroutput">extent</code>).
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../category.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../category.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="value_traits/primary.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/category/value_traits/primary.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/category/value_traits/primary.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,128 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Categorizing a Type</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../value_traits.html" title="Type Traits that Describe the Properties of a Type">
+<link rel="prev" href="../value_traits.html" title="Type Traits that Describe the Properties of a Type">
+<link rel="next" href="properties.html" title="General Type Properties">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../value_traits.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../value_traits.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="properties.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_typetraits.category.value_traits.primary"></a><a href="primary.html" title="Categorizing a Type"> Categorizing
+ a Type</a>
+</h4></div></div></div>
+<p>
+ These traits identify what "kind" of type some type <code class="computeroutput"><span class="identifier">T</span></code> is. These are split into two groups:
+ primary traits which are all mutually exclusive, and composite traits that
+ are compositions of one or more primary traits.
+ </p>
+<p>
+ For any given type, exactly one primary type trait will inherit from true_type,
+ and all the others will inherit from false_type,
+ in other words these traits are mutually exclusive.
+ </p>
+<p>
+ This means that <code class="computeroutput">is_integral<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
+ and <code class="computeroutput">is_floating_point<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
+ will only ever be true for built-in types; if you want to check for a user-defined
+ class type that behaves "as if" it is an integral or floating
+ point type, then use the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span>
+ <span class="keyword">template</span></code> instead.
+ </p>
+<p>
+ <span class="bold"><strong>Synopsis:</strong></span>
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_array<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_class<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_complex<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_enum<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_floating_point<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_function<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_integral<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_member_function_pointer<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_member_object_pointer<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_pointer<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_reference<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_union<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_void<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;;</span>
+</pre>
+<p>
+ The following traits are made up of the union of one or more type categorizations.
+ A type may belong to more than one of these categories, in addition to
+ one of the primary categories.
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_arithmetic<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_compound<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_fundamental<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_member_pointer<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_object<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_scalar<span class="special">;</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../value_traits.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../value_traits.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="properties.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/category/value_traits/properties.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/category/value_traits/properties.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,122 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>General Type Properties</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../value_traits.html" title="Type Traits that Describe the Properties of a Type">
+<link rel="prev" href="primary.html" title="Categorizing a Type">
+<link rel="next" href="relate.html" title="Relationships Between Two Types">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="primary.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../value_traits.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="relate.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_typetraits.category.value_traits.properties"></a><a href="properties.html" title="General Type Properties">
+ General Type Properties</a>
+</h4></div></div></div>
+<p>
+ The following templates describe the general properties of a type.
+ </p>
+<p>
+ <span class="bold"><strong>Synopsis:</strong></span>
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> alignment_of<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> has_nothrow_assign<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> has_nothrow_constructor<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> has_nothrow_default_constructor<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> has_nothrow_copy<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> has_nothrow_copy_constructor<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> has_trivial_assign<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> has_trivial_constructor<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> has_trivial_default_constructor<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> has_trivial_copy<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> has_trivial_copy_constructor<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> has_trivial_destructor<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> has_virtual_destructor<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_abstract<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_const<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_empty<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_stateless<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_pod<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_polymorphic<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_signed<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_unsigned<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_volatile<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span> <span class="special">=</span> <span class="number">0</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> extent<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> rank<span class="special">;</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="primary.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../value_traits.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="relate.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/category/value_traits/relate.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/category/value_traits/relate.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,60 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Relationships Between Two Types</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../value_traits.html" title="Type Traits that Describe the Properties of a Type">
+<link rel="prev" href="properties.html" title="General Type Properties">
+<link rel="next" href="../transform.html" title="Type Traits that Transform One Type to Another">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="properties.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../value_traits.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../transform.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_typetraits.category.value_traits.relate"></a><a href="relate.html" title="Relationships Between Two Types"> Relationships
+ Between Two Types</a>
+</h4></div></div></div>
+<p>
+ These templates determine the whether there is a relationship between two
+ types:
+ </p>
+<p>
+ <span class="bold"><strong>Synopsis:</strong></span>
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Base</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Derived</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_base_of<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">From</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">To</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_convertible<span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> is_same<span class="special">;</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="properties.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../value_traits.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../transform.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/credits.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/credits.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,74 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Credits</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="prev" href="reference/type_with_alignment.html" title="type_with_alignment">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/type_with_alignment.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_typetraits.credits"></a> Credits
+</h2></div></div></div>
+<p>
+ This documentation was pulled together by John Maddock, using Boost.Quickbook
+ and Boost.DocBook.
+ </p>
+<p>
+ The original version of this library was created by Steve Cleary, Beman Dawes,
+ Howard Hinnant, and John Maddock. John Maddock is the current maintainer of
+ the library.
+ </p>
+<p>
+ This version of type traits library is based on contributions by Adobe Systems
+ Inc, David Abrahams, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
+ Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek.
+ </p>
+<p>
+ Mat Marcus and Jesse Jones invented, and <a href="http://opensource.adobe.com/project4/project.shtml" target="_top">published
+ a paper describing</a>, the partial specialization workarounds used in
+ this library.
+ </p>
+<p>
+ Aleksey Gurtovoy added MPL integration to the library.
+ </p>
+<p>
+ The is_convertible
+ template is based on code originally devised by Andrei Alexandrescu, see "<a href="http://www.cuj.com/experts/1810/alexandr.htm?topic=experts" target="_top">Generic&lt;Programming&gt;:
+ Mappings between Types and Values</a>".
+ </p>
+<p>
+ The latest version of this library and documentation can be found at www.boost.org. Bugs, suggestions and discussion
+ should be directed to boost_at_[hidden] (see www.boost.org/more/mailing_lists.htm#main
+ for subscription details).
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/type_with_alignment.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/examples.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/examples.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Examples</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="prev" href="mpl.html" title="MPL Interoperability">
+<link rel="next" href="examples/copy.html" title="An Optimized Version of std::copy">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mpl.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="examples/copy.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_typetraits.examples"></a> Examples
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="examples/copy.html"> An Optimized Version
+ of std::copy</a></span></dt>
+<dt><span class="section"><a href="examples/fill.html"> An Optimised Version
+ of std::fill</a></span></dt>
+<dt><span class="section"><a href="examples/destruct.html"> An Example that
+ Omits Destructor Calls For Types with Trivial Destructors</a></span></dt>
+<dt><span class="section"><a href="examples/iter.html"> An improved Version
+ of std::iter_swap</a></span></dt>
+<dt><span class="section"><a href="examples/to_double.html"> Convert Numeric
+ Types and Enums to double</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mpl.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="examples/copy.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/examples/copy.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/examples/copy.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,92 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>An Optimized Version of std::copy</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../examples.html" title="Examples">
+<link rel="prev" href="../examples.html" title="Examples">
+<link rel="next" href="fill.html" title="An Optimised Version of std::fill">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../examples.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="fill.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.examples.copy"></a><a href="copy.html" title="An Optimized Version of std::copy"> An Optimized Version
+ of std::copy</a>
+</h3></div></div></div>
+<p>
+ Demonstrates a version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">copy</span></code>
+ that uses <code class="computeroutput">has_trivial_assign</code>
+ to determine whether to use <code class="computeroutput"><span class="identifier">memcpy</span></code>
+ to optimise the copy operation (see copy_example.cpp):
+ </p>
+<pre class="programlisting">
+<span class="comment">//
+</span><span class="comment">// opt::copy
+</span><span class="comment">// same semantics as std::copy
+</span><span class="comment">// calls memcpy where appropriate.
+</span><span class="comment">//
+</span>
+<span class="keyword">namespace</span> <span class="identifier">detail</span><span class="special">{</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">I1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">I2</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">b</span><span class="special">&gt;</span>
+<span class="identifier">I2</span> <span class="identifier">copy_imp</span><span class="special">(</span><span class="identifier">I1</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">I1</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">I2</span> <span class="identifier">out</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span>integral_constant<span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span> <span class="identifier">b</span><span class="special">&gt;&amp;)</span>
+<span class="special">{</span>
+ <span class="keyword">while</span><span class="special">(</span><span class="identifier">first</span> <span class="special">!=</span> <span class="identifier">last</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="special">*</span><span class="identifier">out</span> <span class="special">=</span> <span class="special">*</span><span class="identifier">first</span><span class="special">;</span>
+ <span class="special">++</span><span class="identifier">out</span><span class="special">;</span>
+ <span class="special">++</span><span class="identifier">first</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">return</span> <span class="identifier">out</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">T</span><span class="special">*</span> <span class="identifier">copy_imp</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">first</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">out</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span>true_type<span class="special">&amp;)</span>
+<span class="special">{</span>
+ <span class="identifier">memcpy</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">first</span><span class="special">,</span> <span class="special">(</span><span class="identifier">last</span><span class="special">-</span><span class="identifier">first</span><span class="special">)*</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">T</span><span class="special">));</span>
+ <span class="keyword">return</span> <span class="identifier">out</span><span class="special">+(</span><span class="identifier">last</span><span class="special">-</span><span class="identifier">first</span><span class="special">);</span>
+<span class="special">}</span>
+
+
+<span class="special">}</span>
+
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">I1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">I2</span><span class="special">&gt;</span>
+<span class="keyword">inline</span> <span class="identifier">I2</span> <span class="identifier">copy</span><span class="special">(</span><span class="identifier">I1</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">I1</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">I2</span> <span class="identifier">out</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">//
+</span> <span class="comment">// We can copy with memcpy if T has a trivial assignment operator,
+</span> <span class="comment">// and if the iterator arguments are actually pointers (this last
+</span> <span class="comment">// requirement we detect with overload resolution):
+</span> <span class="comment">//
+</span> <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">I1</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">copy_imp</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">out</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span>has_trivial_assign<span class="special">&lt;</span><span class="identifier">value_type</span><span class="special">&gt;());</span>
+<span class="special">}</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../examples.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="fill.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/examples/destruct.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/examples/destruct.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,79 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>An Example that Omits Destructor Calls For Types with Trivial Destructors</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../examples.html" title="Examples">
+<link rel="prev" href="fill.html" title="An Optimised Version of std::fill">
+<link rel="next" href="iter.html" title="An improved Version of std::iter_swap">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="fill.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="iter.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.examples.destruct"></a><a href="destruct.html" title="An Example that Omits Destructor Calls For Types with Trivial Destructors"> An Example that
+ Omits Destructor Calls For Types with Trivial Destructors</a>
+</h3></div></div></div>
+<p>
+ Demonstrates a simple algorithm that uses <code class="computeroutput"><span class="identifier">__has_trivial_destruct</span></code>
+ to determine whether to destructors need to be called (see trivial_destructor_example.cpp):
+ </p>
+<pre class="programlisting">
+<span class="comment">//
+</span><span class="comment">// algorithm destroy_array:
+</span><span class="comment">// The reverse of std::unitialized_copy, takes a block of
+</span><span class="comment">// initialized memory and calls destructors on all objects therein.
+</span><span class="comment">//
+</span>
+<span class="keyword">namespace</span> <span class="identifier">detail</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">do_destroy_array</span><span class="special">(</span><span class="identifier">T</span><span class="special">*</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">last</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span>false_type<span class="special">&amp;)</span>
+<span class="special">{</span>
+ <span class="keyword">while</span><span class="special">(</span><span class="identifier">first</span> <span class="special">!=</span> <span class="identifier">last</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">first</span><span class="special">-&gt;~</span><span class="identifier">T</span><span class="special">();</span>
+ <span class="special">++</span><span class="identifier">first</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">inline</span> <span class="keyword">void</span> <span class="identifier">do_destroy_array</span><span class="special">(</span><span class="identifier">T</span><span class="special">*</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">last</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span>true_type<span class="special">&amp;)</span>
+<span class="special">{</span>
+<span class="special">}</span>
+
+<span class="special">}</span> <span class="comment">// namespace detail
+</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">inline</span> <span class="keyword">void</span> <span class="identifier">destroy_array</span><span class="special">(</span><span class="identifier">T</span><span class="special">*</span> <span class="identifier">p1</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">p2</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">detail</span><span class="special">::</span><span class="identifier">do_destroy_array</span><span class="special">(</span><span class="identifier">p1</span><span class="special">,</span> <span class="identifier">p2</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span>has_trivial_destructor<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;());</span>
+<span class="special">}</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="fill.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="iter.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/examples/fill.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/examples/fill.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,86 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>An Optimised Version of std::fill</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../examples.html" title="Examples">
+<link rel="prev" href="copy.html" title="An Optimized Version of std::copy">
+<link rel="next" href="destruct.html" title="An Example that Omits Destructor Calls For Types with Trivial Destructors">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="copy.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="destruct.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.examples.fill"></a><a href="fill.html" title="An Optimised Version of std::fill"> An Optimised Version
+ of std::fill</a>
+</h3></div></div></div>
+<p>
+ Demonstrates a version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">fill</span></code>
+ that uses <code class="computeroutput">has_trivial_assign</code>
+ to determine whether to use <code class="computeroutput"><span class="identifier">memset</span></code>
+ to optimise the fill operation (see fill_example.cpp):
+ </p>
+<pre class="programlisting">
+<span class="comment">//
+</span><span class="comment">// fill
+</span><span class="comment">// same as std::fill, but uses memset where appropriate
+</span><span class="comment">//
+</span><span class="keyword">namespace</span> <span class="identifier">detail</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">I</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">b</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">do_fill</span><span class="special">(</span><span class="identifier">I</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">I</span> <span class="identifier">last</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span>integral_constant<span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span> <span class="identifier">b</span><span class="special">&gt;&amp;)</span>
+<span class="special">{</span>
+ <span class="keyword">while</span><span class="special">(</span><span class="identifier">first</span> <span class="special">!=</span> <span class="identifier">last</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="special">*</span><span class="identifier">first</span> <span class="special">=</span> <span class="identifier">val</span><span class="special">;</span>
+ <span class="special">++</span><span class="identifier">first</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">do_fill</span><span class="special">(</span><span class="identifier">T</span><span class="special">*</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">last</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span>true_type<span class="special">&amp;)</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">memset</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">val</span><span class="special">,</span> <span class="identifier">last</span><span class="special">-</span><span class="identifier">first</span><span class="special">);</span>
+<span class="special">}</span>
+
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">I</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">inline</span> <span class="keyword">void</span> <span class="identifier">fill</span><span class="special">(</span><span class="identifier">I</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">I</span> <span class="identifier">last</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">//
+</span> <span class="comment">// We can do an optimised fill if T has a trivial assignment
+</span> <span class="comment">// operator and if it's size is one:
+</span> <span class="comment">//
+</span> <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span>integral_constant<span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span>has_trivial_assign<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span> <span class="special">&amp;&amp;</span> <span class="special">(</span><span class="keyword">sizeof</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span> <span class="special">==</span> <span class="number">1</span><span class="special">)&gt;</span> <span class="identifier">truth_type</span><span class="special">;</span>
+ <span class="identifier">detail</span><span class="special">::</span><span class="identifier">do_fill</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">val</span><span class="special">,</span> <span class="identifier">truth_type</span><span class="special">());</span>
+<span class="special">}</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="copy.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="destruct.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/examples/iter.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/examples/iter.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,95 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>An improved Version of std::iter_swap</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../examples.html" title="Examples">
+<link rel="prev" href="destruct.html" title="An Example that Omits Destructor Calls For Types with Trivial Destructors">
+<link rel="next" href="to_double.html" title="Convert Numeric Types and Enums to double">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="destruct.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="to_double.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.examples.iter"></a><a href="iter.html" title="An improved Version of std::iter_swap"> An improved Version
+ of std::iter_swap</a>
+</h3></div></div></div>
+<p>
+ Demonstrates a version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iter_swap</span></code>
+ that use type traits to determine whether an it's arguments are proxying
+ iterators or not, if they're not then it just does a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">swap</span></code>
+ of it's dereferenced arguments (the same as <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iter_swap</span></code>
+ does), however if they are proxying iterators then takes special care over
+ the swap to ensure that the algorithm works correctly for both proxying iterators,
+ and even iterators of different types (see iter_swap_example.cpp):
+ </p>
+<pre class="programlisting">
+<span class="comment">//
+</span><span class="comment">// iter_swap:
+</span><span class="comment">// tests whether iterator is a proxying iterator or not, and
+</span><span class="comment">// uses optimal form accordingly:
+</span><span class="comment">//
+</span><span class="keyword">namespace</span> <span class="identifier">detail</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">I</span><span class="special">&gt;</span>
+<span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">do_swap</span><span class="special">(</span><span class="identifier">I</span> <span class="identifier">one</span><span class="special">,</span> <span class="identifier">I</span> <span class="identifier">two</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span>false_type<span class="special">&amp;)</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">I</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="identifier">v_t</span><span class="special">;</span>
+ <span class="identifier">v_t</span> <span class="identifier">v</span> <span class="special">=</span> <span class="special">*</span><span class="identifier">one</span><span class="special">;</span>
+ <span class="special">*</span><span class="identifier">one</span> <span class="special">=</span> <span class="special">*</span><span class="identifier">two</span><span class="special">;</span>
+ <span class="special">*</span><span class="identifier">two</span> <span class="special">=</span> <span class="identifier">v</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">I</span><span class="special">&gt;</span>
+<span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">do_swap</span><span class="special">(</span><span class="identifier">I</span> <span class="identifier">one</span><span class="special">,</span> <span class="identifier">I</span> <span class="identifier">two</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span>true_type<span class="special">&amp;)</span>
+<span class="special">{</span>
+ <span class="keyword">using</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">swap</span><span class="special">;</span>
+ <span class="identifier">swap</span><span class="special">(*</span><span class="identifier">one</span><span class="special">,</span> <span class="special">*</span><span class="identifier">two</span><span class="special">);</span>
+<span class="special">}</span>
+
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">I1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">I2</span><span class="special">&gt;</span>
+<span class="keyword">inline</span> <span class="keyword">void</span> <span class="identifier">iter_swap</span><span class="special">(</span><span class="identifier">I1</span> <span class="identifier">one</span><span class="special">,</span> <span class="identifier">I2</span> <span class="identifier">two</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">//
+</span> <span class="comment">// See is both arguments are non-proxying iterators,
+</span> <span class="comment">// and if both iterator the same type:
+</span> <span class="comment">//
+</span> <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">I1</span><span class="special">&gt;::</span><span class="identifier">reference</span> <span class="identifier">r1_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">I2</span><span class="special">&gt;::</span><span class="identifier">reference</span> <span class="identifier">r2_t</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span>integral_constant<span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span>is_reference<span class="special">&lt;</span><span class="identifier">r1_t</span><span class="special">&gt;::</span><span class="identifier">value</span>
+ <span class="special">&amp;&amp;</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span>is_reference<span class="special">&lt;</span><span class="identifier">r2_t</span><span class="special">&gt;::</span><span class="identifier">value</span>
+ <span class="special">&amp;&amp;</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span>is_same<span class="special">&lt;</span><span class="identifier">r1_t</span><span class="special">,</span> <span class="identifier">r2_t</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">&gt;</span> <span class="identifier">truth_type</span><span class="special">;</span>
+
+ <span class="identifier">detail</span><span class="special">::</span><span class="identifier">do_swap</span><span class="special">(</span><span class="identifier">one</span><span class="special">,</span> <span class="identifier">two</span><span class="special">,</span> <span class="identifier">truth_type</span><span class="special">());</span>
+<span class="special">}</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="destruct.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="to_double.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/examples/to_double.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/examples/to_double.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Convert Numeric Types and Enums to double</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../examples.html" title="Examples">
+<link rel="prev" href="iter.html" title="An improved Version of std::iter_swap">
+<link rel="next" href="../reference.html" title="Alphabetical Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="iter.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.examples.to_double"></a><a href="to_double.html" title="Convert Numeric Types and Enums to double"> Convert Numeric
+ Types and Enums to double</a>
+</h3></div></div></div>
+<p>
+ Demonstrates a conversion of <a href="../../../../libs/numeric/conversion/doc/definitions.html#numtypes" target="_top">Numeric
+ Types</a> and enum types to double:
+ </p>
+<pre class="programlisting">
+<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">inline</span> <span class="keyword">double</span> <span class="identifier">to_double</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">value</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">promote</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">promoted</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">numeric</span><span class="special">::</span><span class="identifier">converter</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span><span class="identifier">promoted</span><span class="special">&gt;::</span><span class="identifier">convert</span><span class="special">(</span><span class="identifier">value</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="iter.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../examples.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/intrinsics.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/intrinsics.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,240 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Support for Compiler Intrinsics</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="prev" href="user_defined.html" title="User Defined Specializations">
+<link rel="next" href="mpl.html" title="MPL Interoperability">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="user_defined.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="mpl.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_typetraits.intrinsics"></a> Support for Compiler Intrinsics
+</h2></div></div></div>
+<p>
+ 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 (May 2005) MWCW
+ 9 and Visual C++ 8 provide the necessary intrinsics, and other compilers will
+ no doubt follow in due course.
+ </p>
+<p>
+ 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):
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>is_union</li>
+<li>is_pod</li>
+<li>has_trivial_constructor</li>
+<li>has_trivial_copy</li>
+<li>has_trivial_assign</li>
+<li>has_trivial_destructor</li>
+<li>has_nothrow_constructor</li>
+<li>has_nothrow_copy</li>
+<li>has_nothrow_assign</li>
+<li>has_virtual_destructor</li>
+</ul></div>
+<p>
+ The following traits classes can't be portably implemented in the C++ language,
+ although in practice, the implementations do in fact do the right thing on
+ all the compilers we know about:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>is_empty</li>
+<li>is_polymorphic</li>
+</ul></div>
+<p>
+ The following traits classes are dependent on one or more of the above:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>is_class</li>
+<li>is_stateless</li>
+</ul></div>
+<p>
+ The hooks for compiler-intrinsic support are defined in boost/type_traits/intrinsics.hpp,
+ adding support for new compilers is simply a matter of defining one of more
+ of the following macros:
+ </p>
+<div class="table">
+<a name="id498499"></a><p class="title"><b>Table 1.4. Macros for Compiler Intrinsics</b></p>
+<div class="table-contents"><table class="table" summary="Macros for Compiler Intrinsics">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ BOOST_IS_UNION(T)
+ </p>
+ </th>
+<th>
+ <p>
+ Should evaluate to true if T is a union type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ BOOST_IS_POD(T)
+ </p>
+ </td>
+<td>
+ <p>
+ Should evaluate to true if T is a POD type
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ BOOST_IS_EMPTY(T)
+ </p>
+ </td>
+<td>
+ <p>
+ Should evaluate to true if T is an empty struct or union
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ BOOST_HAS_TRIVIAL_CONSTRUCTOR(T)
+ </p>
+ </td>
+<td>
+ <p>
+ Should evaluate to true if the default constructor for T is trivial (i.e.
+ has no effect)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ BOOST_HAS_TRIVIAL_COPY(T)
+ </p>
+ </td>
+<td>
+ <p>
+ Should evaluate to true if T has a trivial copy constructor (and can
+ therefore be replaced by a call to memcpy)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ BOOST_HAS_TRIVIAL_ASSIGN(T)
+ </p>
+ </td>
+<td>
+ <p>
+ Should evaluate to true if T has a trivial assignment operator (and can
+ therefore be replaced by a call to memcpy)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ BOOST_HAS_TRIVIAL_DESTRUCTOR(T)
+ </p>
+ </td>
+<td>
+ <p>
+ Should evaluate to true if T has a trivial destructor (i.e. ~T() has
+ no effect)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ BOOST_HAS_NOTHROW_CONSTRUCTOR(T)
+ </p>
+ </td>
+<td>
+ <p>
+ Should evaluate to true if <code class="computeroutput"><span class="identifier">T</span>
+ <span class="identifier">x</span><span class="special">;</span></code>
+ can not throw
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ BOOST_HAS_NOTHROW_COPY(T)
+ </p>
+ </td>
+<td>
+ <p>
+ Should evaluate to true if <code class="computeroutput"><span class="identifier">T</span><span class="special">(</span><span class="identifier">t</span><span class="special">)</span></code> can not throw
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ BOOST_HAS_NOTHROW_ASSIGN(T)
+ </p>
+ </td>
+<td>
+ <p>
+ Should evaluate to true if <code class="computeroutput"><span class="identifier">T</span>
+ <span class="identifier">t</span><span class="special">,</span>
+ <span class="identifier">u</span><span class="special">;</span>
+ <span class="identifier">t</span> <span class="special">=</span>
+ <span class="identifier">u</span></code> can not throw
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ BOOST_HAS_VIRTUAL_DESTRUCTOR(T)
+ </p>
+ </td>
+<td>
+ <p>
+ Should evaluate to true T has a virtual destructor
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="user_defined.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="mpl.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/intro.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/intro.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Introduction</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="prev" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="next" href="background.html" title="Background and Tutorial">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="background.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_typetraits.intro"></a> Introduction
+</h2></div></div></div>
+<p>
+ The Boost type-traits library contains a set of very specific traits classes,
+ each of which encapsulate a single trait from the C++ type system; for example,
+ is a type a pointer or a reference type? Or does a type have a trivial constructor,
+ or a const-qualifier?
+ </p>
+<p>
+ The type-traits classes share a unified design: each class inherits from a
+ the type true_type
+ if the type has the specified property and inherits from false_type
+ otherwise.
+ </p>
+<p>
+ The type-traits library also contains a set of classes that perform a specific
+ transformation on a type; for example, they can remove a top-level const or
+ volatile qualifier from a type. Each class that performs a transformation defines
+ a single typedef-member <code class="computeroutput"><span class="identifier">type</span></code>
+ that is the result of the transformation.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="background.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/mpl.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/mpl.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,58 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>MPL Interoperability</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="prev" href="intrinsics.html" title="Support for Compiler Intrinsics">
+<link rel="next" href="examples.html" title="Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="intrinsics.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="examples.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_typetraits.mpl"></a> MPL Interoperability
+</h2></div></div></div>
+<p>
+ All the value based traits in this library conform to MPL's requirements for
+ an <a href="../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">Integral
+ Constant type</a>: that includes a number of rather intrusive workarounds
+ for broken compilers.
+ </p>
+<p>
+ Purely as an implementation detail, this means that <code class="computeroutput">true_type</code>
+ inherits from boost::mpl::true_,
+ <code class="computeroutput">false_type</code>
+ inherits from boost::mpl::false_,
+ and <code class="computeroutput">integral_constant<span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span>
+ <span class="identifier">v</span><span class="special">&gt;</span></code>
+ inherits from boost::mpl::integral_c<T,v>
+ (provided <code class="computeroutput"><span class="identifier">T</span></code> is not <code class="computeroutput"><span class="keyword">bool</span></code>)
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="intrinsics.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="examples.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,117 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Alphabetical Reference</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="prev" href="examples/to_double.html" title="Convert Numeric Types and Enums to double">
+<link rel="next" href="reference/add_const.html" title="add_const">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="examples/to_double.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference/add_const.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_typetraits.reference"></a> Alphabetical Reference
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"> add_const</span></dt>
+<dt><span class="section"> add_cv</span></dt>
+<dt><span class="section"> add_pointer</span></dt>
+<dt><span class="section"> add_reference</span></dt>
+<dt><span class="section"> add_volatile</span></dt>
+<dt><span class="section"> aligned_storage</span></dt>
+<dt><span class="section"> alignment_of</span></dt>
+<dt><span class="section"> decay</span></dt>
+<dt><span class="section"> extent</span></dt>
+<dt><span class="section"><a href="reference/floating_point_promotion.html">
+ floating_point_promotion</a></span></dt>
+<dt><span class="section"> function_traits</span></dt>
+<dt><span class="section"> has_nothrow_assign</span></dt>
+<dt><span class="section"><a href="reference/has_nothrow_constructor.html">
+ has_nothrow_constructor</a></span></dt>
+<dt><span class="section"> has_nothrow_copy</span></dt>
+<dt><span class="section"> has_nothrow_copy_constructor</span></dt>
+<dt><span class="section"> has_nothrow_default_constructor</span></dt>
+<dt><span class="section"> has_trivial_assign</span></dt>
+<dt><span class="section"><a href="reference/has_trivial_constructor.html">
+ has_trivial_constructor</a></span></dt>
+<dt><span class="section"> has_trivial_copy</span></dt>
+<dt><span class="section"> has_trivial_copy_constructor</span></dt>
+<dt><span class="section"> has_trivial_default_constructor</span></dt>
+<dt><span class="section"> has_trivial_destructor</span></dt>
+<dt><span class="section"> has_virtual_destructor</span></dt>
+<dt><span class="section"> integral_constant</span></dt>
+<dt><span class="section"> integral_promotion</span></dt>
+<dt><span class="section"> is_abstract</span></dt>
+<dt><span class="section"> is_arithmetic</span></dt>
+<dt><span class="section"> is_array</span></dt>
+<dt><span class="section"> is_base_of</span></dt>
+<dt><span class="section"> is_class</span></dt>
+<dt><span class="section"> is_complex</span></dt>
+<dt><span class="section"> is_compound</span></dt>
+<dt><span class="section"> is_const</span></dt>
+<dt><span class="section"> is_convertible</span></dt>
+<dt><span class="section"> is_empty</span></dt>
+<dt><span class="section"> is_enum</span></dt>
+<dt><span class="section"> is_floating_point</span></dt>
+<dt><span class="section"> is_function</span></dt>
+<dt><span class="section"> is_fundamental</span></dt>
+<dt><span class="section"> is_integral</span></dt>
+<dt><span class="section"><a href="reference/is_member_function_pointer.html">
+ is_member_function_pointer</a></span></dt>
+<dt><span class="section"><a href="reference/is_member_object_pointer.html">
+ is_member_object_pointer</a></span></dt>
+<dt><span class="section"> is_member_pointer</span></dt>
+<dt><span class="section"> is_object</span></dt>
+<dt><span class="section"> is_pod</span></dt>
+<dt><span class="section"> is_pointer</span></dt>
+<dt><span class="section"> is_polymorphic</span></dt>
+<dt><span class="section"> is_same</span></dt>
+<dt><span class="section"> is_scalar</span></dt>
+<dt><span class="section"> is_signed</span></dt>
+<dt><span class="section"> is_stateless</span></dt>
+<dt><span class="section"> is_reference</span></dt>
+<dt><span class="section"> is_union</span></dt>
+<dt><span class="section"> is_unsigned</span></dt>
+<dt><span class="section"> is_void</span></dt>
+<dt><span class="section"> is_volatile</span></dt>
+<dt><span class="section"> make_signed</span></dt>
+<dt><span class="section"> make_unsigned</span></dt>
+<dt><span class="section"> promote</span></dt>
+<dt><span class="section"> rank</span></dt>
+<dt><span class="section"> remove_all_extents</span></dt>
+<dt><span class="section"> remove_const</span></dt>
+<dt><span class="section"> remove_cv</span></dt>
+<dt><span class="section"> remove_extent</span></dt>
+<dt><span class="section"> remove_pointer</span></dt>
+<dt><span class="section"> remove_reference</span></dt>
+<dt><span class="section"> remove_volatile</span></dt>
+<dt><span class="section"> type_with_alignment</span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="examples/to_double.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference/add_const.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/add_const.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/add_const.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,142 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>add_const</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="../reference.html" title="Alphabetical Reference">
+<link rel="next" href="add_cv.html" title="add_cv">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="add_cv.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.add_const"></a> add_const
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">add_const</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> The same type as <code class="computeroutput"><span class="identifier">T</span>
+ <span class="keyword">const</span></code> for all <code class="computeroutput"><span class="identifier">T</span></code>.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.3.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial specialization of class-templates then this template
+ will compile, but the member <code class="computeroutput"><span class="identifier">type</span></code>
+ will always be the same as type <code class="computeroutput"><span class="identifier">T</span></code>
+ except where <a href="../category/transform.html#boost_typetraits.category.transform.broken_compiler_workarounds_">compiler
+ workarounds</a> have been applied.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">add_const</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id503642"></a><p class="title"><b>Table 1.5. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_const</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_const</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_const</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">*</span>
+ <span class="keyword">const</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_const</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="add_cv.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/add_cv.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/add_cv.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,145 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>add_cv</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="add_const.html" title="add_const">
+<link rel="next" href="add_pointer.html" title="add_pointer">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="add_const.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="add_pointer.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.add_cv"></a> add_cv
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">add_cv</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> The same type as <code class="computeroutput"><span class="identifier">T</span>
+ <span class="keyword">const</span> <span class="keyword">volatile</span></code>
+ for all <code class="computeroutput"><span class="identifier">T</span></code>.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.3.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial specialization of class-templates then this template
+ will compile, but the member <code class="computeroutput"><span class="identifier">type</span></code>
+ will always be the same as type <code class="computeroutput"><span class="identifier">T</span></code>
+ except where <a href="../category/transform.html#boost_typetraits.category.transform.broken_compiler_workarounds_">compiler
+ workarounds</a> have been applied.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">add_cv</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id504281"></a><p class="title"><b>Table 1.6. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_cv</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span>
+ <span class="keyword">volatile</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_cv</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_cv</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">*</span>
+ <span class="keyword">const</span> <span class="keyword">volatile</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_cv</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span>
+ <span class="keyword">volatile</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="add_const.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="add_pointer.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/add_pointer.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/add_pointer.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,144 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>add_pointer</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="add_cv.html" title="add_cv">
+<link rel="next" href="add_reference.html" title="add_reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="add_cv.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="add_reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.add_pointer"></a> add_pointer
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">add_pointer</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> The same type as <code class="computeroutput"><span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">*</span></code>.
+ </p>
+<p>
+ The rationale for this template is that it produces the same type as <code class="computeroutput"><span class="identifier">TYPEOF</span><span class="special">(&amp;</span><span class="identifier">t</span><span class="special">)</span></code>, where
+ <code class="computeroutput"><span class="identifier">t</span></code> is an object of type <code class="computeroutput"><span class="identifier">T</span></code>.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 8.3.1.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial specialization of class-templates then this template
+ will compile, but the member <code class="computeroutput"><span class="identifier">type</span></code>
+ will always be the same as type <code class="computeroutput"><span class="identifier">T</span></code>
+ except where <a href="../category/transform.html#boost_typetraits.category.transform.broken_compiler_workarounds_">compiler
+ workarounds</a> have been applied.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">add_pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id504994"></a><p class="title"><b>Table 1.7. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_pointer</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">*</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_pointer</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span><span class="special">*</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_pointer</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">**</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_pointer</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">**</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="add_cv.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="add_reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/add_reference.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/add_reference.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,141 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>add_reference</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="add_pointer.html" title="add_pointer">
+<link rel="next" href="add_volatile.html" title="add_volatile">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="add_pointer.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="add_volatile.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.add_reference"></a> add_reference
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">add_reference</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> If <code class="computeroutput"><span class="identifier">T</span></code>
+ is not a reference type then <code class="computeroutput"><span class="identifier">T</span><span class="special">&amp;</span></code>, otherwise <code class="computeroutput"><span class="identifier">T</span></code>.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 8.3.2.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial specialization of class-templates then this template
+ will compile, but the member <code class="computeroutput"><span class="identifier">type</span></code>
+ will always be the same as type <code class="computeroutput"><span class="identifier">T</span></code>
+ except where <a href="../category/transform.html#boost_typetraits.category.transform.broken_compiler_workarounds_">compiler
+ workarounds</a> have been applied.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">add_reference</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id505633"></a><p class="title"><b>Table 1.8. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_reference</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">*&amp;</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">*&amp;</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="add_pointer.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="add_volatile.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/add_volatile.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/add_volatile.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,143 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>add_volatile</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="add_reference.html" title="add_reference">
+<link rel="next" href="aligned_storage.html" title="aligned_storage">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="add_reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="aligned_storage.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.add_volatile"></a> add_volatile
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">add_volatile</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> The same type as <code class="computeroutput"><span class="identifier">T</span>
+ <span class="keyword">volatile</span></code> for all <code class="computeroutput"><span class="identifier">T</span></code>.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.3.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial specialization of class-templates then this template
+ will compile, but the member <code class="computeroutput"><span class="identifier">type</span></code>
+ will always be the same as type <code class="computeroutput"><span class="identifier">T</span></code>
+ except where <a href="../category/transform.html#boost_typetraits.category.transform.broken_compiler_workarounds_">compiler
+ workarounds</a> have been applied.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">add_volatile</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id506264"></a><p class="title"><b>Table 1.9. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_volatile</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">volatile</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_volatile</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_volatile</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">*</span>
+ <span class="keyword">volatile</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">add_volatile</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span>
+ <span class="keyword">volatile</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="add_reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="aligned_storage.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/aligned_storage.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/aligned_storage.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,59 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>aligned_storage</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="add_volatile.html" title="add_volatile">
+<link rel="next" href="alignment_of.html" title="alignment_of">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="add_volatile.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="alignment_of.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.aligned_storage"></a> aligned_storage
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Size</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Align</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">aligned_storage</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> a built-in or POD type with size
+ <code class="computeroutput"><span class="identifier">Size</span></code> and an alignment that
+ is a multiple of <code class="computeroutput"><span class="identifier">Align</span></code>.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">aligned_storage</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="add_volatile.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="alignment_of.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/alignment_of.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/alignment_of.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,102 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>alignment_of</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="aligned_storage.html" title="aligned_storage">
+<link rel="next" href="decay.html" title="decay">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="aligned_storage.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="decay.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.alignment_of"></a> alignment_of
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">alignment_of</span> <span class="special">:</span> <span class="keyword">public</span> integral_constant<span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="identifier">ALIGNOF</span><span class="special">(</span><span class="identifier">T</span><span class="special">)&gt;</span> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> Class template alignment<span class="underline">of inherits from `</span>_integral_constant&lt;std::size_t,
+ ALIGNOF(T)&gt;<code class="computeroutput"><span class="special">,</span> <span class="identifier">where</span>
+ </code>ALIGNOF(T)` is the alignment of type T.
+ </p>
+<p>
+ <span class="emphasis"><em>Note: strictly speaking you should only rely on the value of <code class="computeroutput"><span class="identifier">ALIGNOF</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code> being
+ a multiple of the true alignment of T, although in practice it does compute
+ the correct value in all the cases we know about.</em></span>
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">alignment_of</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">alignment_of</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">integral_constant<span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="identifier">ALIGNOF</span><span class="special">(</span><span class="keyword">int</span><span class="special">)&gt;</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">alignment_of</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">integral_constant<span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="identifier">ALIGNOF</span><span class="special">(</span><span class="keyword">char</span><span class="special">)&gt;</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">alignment_of</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ with value <code class="computeroutput"><span class="identifier">ALIGNOF</span><span class="special">(</span><span class="keyword">double</span><span class="special">)</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">alignment_of</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="aligned_storage.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="decay.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/decay.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/decay.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,148 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>decay</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="alignment_of.html" title="alignment_of">
+<link rel="next" href="extent.html" title="extent">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="alignment_of.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="extent.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.decay"></a> decay
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">decay</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> Let <code class="computeroutput"><span class="identifier">U</span></code>
+ be the result of <code class="computeroutput"><span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span></code>, then if <code class="computeroutput"><span class="identifier">U</span></code>
+ is an array type, the result is <code class="computeroutput"><span class="identifier">remove_extent</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;*</span></code>,
+ otherwise if <code class="computeroutput"><span class="identifier">U</span></code> is a function
+ type then the result is <code class="computeroutput"><span class="identifier">U</span><span class="special">*</span></code>, otherwise the result is <code class="computeroutput"><span class="identifier">U</span></code>.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.1.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">decay</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id507925"></a><p class="title"><b>Table 1.10. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">decay</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">[</span><span class="number">2</span><span class="special">][</span><span class="number">3</span><span class="special">]&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">[</span><span class="number">2</span><span class="special">]*</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">decay</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">(&amp;)[</span><span class="number">2</span><span class="special">]&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">*</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">decay</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">(&amp;)(</span><span class="keyword">double</span><span class="special">)&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">(*)(</span><span class="keyword">double</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">(*)(</span><span class="keyword">double</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">(*)(</span><span class="keyword">double</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">(</span><span class="keyword">double</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">(*)(</span><span class="keyword">double</span><span class="special">)</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="alignment_of.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="extent.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/extent.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/extent.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,134 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>extent</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="decay.html" title="decay">
+<link rel="next" href="floating_point_promotion.html" title="floating_point_promotion">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="decay.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="floating_point_promotion.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.extent"></a> extent
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span> <span class="special">=</span> <span class="number">0</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">extent</span> <span class="special">:</span> <span class="keyword">public</span> integral_constant<span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="identifier">EXTENT</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">)&gt;</span> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> Class template extent inherits
+ from <code class="computeroutput">integral_constant<span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="identifier">EXTENT</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">)&gt;</span></code>,
+ where <code class="computeroutput"><span class="identifier">EXTENT</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">)</span></code> is the number of elements in the N'th array
+ dimention of type <code class="computeroutput"><span class="identifier">T</span></code>.
+ </p>
+<p>
+ If <code class="computeroutput"><span class="identifier">T</span></code> is not an array type,
+ or if <code class="computeroutput"><span class="identifier">N</span> <span class="special">&gt;</span>
+ rank<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span></code>, or if the N'th array bound is incomplete,
+ then <code class="computeroutput"><span class="identifier">EXTENT</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">N</span><span class="special">)</span></code> is zero.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">extent</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">extent</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">[</span><span class="number">1</span><span class="special">]&gt;</span></code> inherits from <code class="computeroutput">integral_constant<span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="number">1</span><span class="special">&gt;</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">extent</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">[</span><span class="number">2</span><span class="special">][</span><span class="number">3</span><span class="special">][</span><span class="number">4</span><span class="special">],</span>
+ <span class="number">1</span><span class="special">&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">integral_constant<span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="number">3</span><span class="special">&gt;</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">extent</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">[</span><span class="number">4</span><span class="special">]&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>4</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">extent</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">[][</span><span class="number">2</span><span class="special">]&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>0</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">extent</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">[][</span><span class="number">2</span><span class="special">],</span> <span class="number">1</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>2</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">extent</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>0</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">extent</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="decay.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="floating_point_promotion.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/floating_point_promotion.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/floating_point_promotion.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,126 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>floating_point_promotion</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="extent.html" title="extent">
+<link rel="next" href="function_traits.html" title="function_traits">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="extent.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="function_traits.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.floating_point_promotion"></a><a href="floating_point_promotion.html" title="floating_point_promotion">
+ floating_point_promotion</a>
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">floating_point_promotion</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> If floating point promotion can be
+ applied to an rvalue of type <code class="computeroutput"><span class="identifier">T</span></code>,
+ then applies floating point promotion to <code class="computeroutput"><span class="identifier">T</span></code>
+ and keeps cv-qualifiers of <code class="computeroutput"><span class="identifier">T</span></code>,
+ otherwise leaves <code class="computeroutput"><span class="identifier">T</span></code> unchanged.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 4.6.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">floating_point_promotion</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id509713"></a><p class="title"><b>Table 1.11. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">floating_point_promotion</span><span class="special">&lt;</span><span class="keyword">float</span>
+ <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">double</span> <span class="keyword">const</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">floating_point_promotion</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">float</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">floating_point_promotion</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">short</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="extent.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="function_traits.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/function_traits.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/function_traits.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,261 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>function_traits</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="floating_point_promotion.html" title="floating_point_promotion">
+<link rel="next" href="has_nothrow_assign.html" title="has_nothrow_assign">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="floating_point_promotion.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_nothrow_assign.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.function_traits"></a> function_traits
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">function_traits</span>
+<span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">arity</span> <span class="special">=</span> <em class="replaceable"><code>see-below</code></em><span class="special">;</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> arg<em class="replaceable"><code>N</code></em>_type<span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ The class template function_traits will only compile if:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ The compiler supports partial specialization of class templates.
+ </li>
+<li>
+ The template argument <code class="computeroutput"><span class="identifier">T</span></code>
+ is a <span class="emphasis"><em>function type</em></span>, note that this <span class="emphasis"><em><span class="bold"><strong>is not</strong></span></em></span> the same thing as a <span class="emphasis"><em>pointer
+ to a function</em></span>.
+ </li>
+</ul></div>
+<div class="table">
+<a name="id510173"></a><p class="title"><b>Table 1.12. Function Traits Members</b></p>
+<div class="table-contents"><table class="table" summary="Function Traits Members">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Member
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">arity</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ An integral constant expression that gives the number of arguments
+ accepted by the function type <code class="computeroutput"><span class="identifier">F</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">result_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type returned by function type <code class="computeroutput"><span class="identifier">F</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span>arg<em class="replaceable"><code>N</code></em>_type</code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <em class="replaceable"><code>N</code></em>th argument type of function type <code class="computeroutput"><span class="identifier">F</span></code>,
+ where <code class="computeroutput"><span class="number">1</span> <span class="special">&lt;=</span>
+ <span class="identifier">N</span> <span class="special">&lt;=</span>
+ <span class="identifier">arity</span></code> of <code class="computeroutput"><span class="identifier">F</span></code>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="table">
+<a name="id510452"></a><p class="title"><b>Table 1.13. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">void</span> <span class="special">(</span><span class="keyword">void</span><span class="special">)&gt;::</span><span class="identifier">arity</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ An integral constant expression that has the value 0.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="special">(</span><span class="keyword">int</span><span class="special">)&gt;::</span><span class="identifier">arity</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ An integral constant expression that has the value 1.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">long</span><span class="special">,</span> <span class="keyword">double</span><span class="special">,</span> <span class="keyword">void</span><span class="special">*)&gt;::</span><span class="identifier">arity</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ An integral constant expression that has the value 4.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">void</span> <span class="special">(</span><span class="keyword">void</span><span class="special">)&gt;::</span><span class="identifier">result_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type <code class="computeroutput"><span class="keyword">void</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="special">(</span><span class="keyword">int</span><span class="special">)&gt;::</span><span class="identifier">result_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type <code class="computeroutput"><span class="keyword">long</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="special">(</span><span class="keyword">int</span><span class="special">)&gt;::</span><span class="identifier">arg1_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type <code class="computeroutput"><span class="keyword">int</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">long</span><span class="special">,</span> <span class="keyword">double</span><span class="special">,</span> <span class="keyword">void</span><span class="special">*)&gt;::</span><span class="identifier">arg4_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type <code class="computeroutput"><span class="keyword">void</span><span class="special">*</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">long</span><span class="special">,</span> <span class="keyword">double</span><span class="special">,</span> <span class="keyword">void</span><span class="special">*)&gt;::</span><span class="identifier">arg5_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A compiler error: there is no <code class="computeroutput"><span class="identifier">arg4_type</span></code>
+ since there are only three arguments.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">function_traits</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="special">(*)(</span><span class="keyword">void</span><span class="special">)&gt;::</span><span class="identifier">arity</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A compiler error: argument type is a <span class="emphasis"><em>function pointer</em></span>,
+ and not a <span class="emphasis"><em>function type</em></span>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="floating_point_promotion.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_nothrow_assign.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_no_throw_def_cons.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_no_throw_def_cons.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>has_nothrow_default_constructor</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="has_nothrow_cp_cons.html" title="has_nothrow_copy_constructor">
+<link rel="next" href="has_trivial_assign.html" title="has_trivial_assign">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_nothrow_cp_cons.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_trivial_assign.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.has_no_throw_def_cons"></a> has_nothrow_default_constructor
+</h3></div></div></div>
+<p>
+ See has_nothrow_constructor.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_nothrow_cp_cons.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_trivial_assign.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_nothrow_assign.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_nothrow_assign.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,70 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>has_nothrow_assign</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="function_traits.html" title="function_traits">
+<link rel="next" href="has_nothrow_constructor.html" title="has_nothrow_constructor">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="function_traits.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_nothrow_constructor.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.has_nothrow_assign"></a> has_nothrow_assign
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">has_nothrow_assign</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ type with a non-throwing assignment-operator then inherits from true_type,
+ otherwise inherits from false_type.
+ Type <code class="computeroutput"><span class="identifier">T</span></code> must be a complete
+ type.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial-specialization of class templates, then this template
+ 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_assign</span></code>
+ will never report that a class or struct has a non-throwing assignment-operator;
+ this is always safe, if possibly sub-optimal. Currently (May 2005) only Visual
+ C++ 8 has the necessary compiler support to ensure that this trait "just
+ works".
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">has_nothrow_assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="function_traits.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_nothrow_constructor.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_nothrow_constructor.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_nothrow_constructor.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,77 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>has_nothrow_constructor</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="has_nothrow_assign.html" title="has_nothrow_assign">
+<link rel="next" href="has_nothrow_copy.html" title="has_nothrow_copy">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_nothrow_assign.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_nothrow_copy.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.has_nothrow_constructor"></a><a href="has_nothrow_constructor.html" title="has_nothrow_constructor">
+ has_nothrow_constructor</a>
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">has_nothrow_constructor</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">has_nothrow_default_constructor</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ type with a non-throwing default-constructor then inherits from true_type,
+ otherwise inherits from false_type.
+ Type <code class="computeroutput"><span class="identifier">T</span></code> must be a complete
+ type.
+ </p>
+<p>
+ These two traits are synonyms for each other.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial-specialization of class templates, then this template
+ 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>
+ 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".
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">has_nothrow_constructor</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_nothrow_assign.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_nothrow_copy.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_nothrow_copy.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_nothrow_copy.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>has_nothrow_copy</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="has_nothrow_constructor.html" title="has_nothrow_constructor">
+<link rel="next" href="has_nothrow_cp_cons.html" title="has_nothrow_copy_constructor">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_nothrow_constructor.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_nothrow_cp_cons.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.has_nothrow_copy"></a> has_nothrow_copy
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">has_nothrow_copy</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">has_nothrow_copy_constructor</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ type with a non-throwing copy-constructor then inherits from true_type,
+ otherwise inherits from false_type.
+ Type <code class="computeroutput"><span class="identifier">T</span></code> must be a complete
+ type.
+ </p>
+<p>
+ These two traits are synonyms for each other.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial-specialization of class templates, then this template
+ 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_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 intrinsics
+ to ensure that this trait "just works".
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">has_nothrow_copy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_nothrow_constructor.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_nothrow_cp_cons.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_nothrow_cp_cons.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_nothrow_cp_cons.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>has_nothrow_copy_constructor</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="has_nothrow_copy.html" title="has_nothrow_copy">
+<link rel="next" href="has_no_throw_def_cons.html" title="has_nothrow_default_constructor">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_nothrow_copy.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_no_throw_def_cons.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.has_nothrow_cp_cons"></a> has_nothrow_copy_constructor
+</h3></div></div></div>
+<p>
+ See has_nothrow_copy.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_nothrow_copy.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_no_throw_def_cons.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_assign.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_assign.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,127 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>has_trivial_assign</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="has_no_throw_def_cons.html" title="has_nothrow_default_constructor">
+<link rel="next" href="has_trivial_constructor.html" title="has_trivial_constructor">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_no_throw_def_cons.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_trivial_constructor.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.has_trivial_assign"></a> has_trivial_assign
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">has_trivial_assign</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ type with a trivial assignment-operator then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ If a type has a trivial assignment-operator then the operator has the same
+ effect as copying the bits of one object to the other: calls to the operator
+ can be safely replaced with a call to <code class="computeroutput"><span class="identifier">memcpy</span></code>.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial-specialization of class templates, then this template
+ can not be used with function types.
+ </p>
+<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 intrinsics
+ to detect user-defined classes with trivial constructors.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 12.8p11.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">has_trivial_assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_assign</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_assign</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">*&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_assign</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(*)(</span><span class="keyword">long</span><span class="special">)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_assign</span><span class="special">&lt;</span><span class="identifier">MyClass</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_assign</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_no_throw_def_cons.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_trivial_constructor.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_constructor.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_constructor.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,137 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>has_trivial_constructor</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="has_trivial_assign.html" title="has_trivial_assign">
+<link rel="next" href="has_trivial_copy.html" title="has_trivial_copy">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_trivial_assign.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_trivial_copy.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.has_trivial_constructor"></a><a href="has_trivial_constructor.html" title="has_trivial_constructor">
+ has_trivial_constructor</a>
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">has_trivial_constructor</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">has_trivial_default_constructor</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ type with a trivial default-constructor then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ These two traits are synonyms for each other.
+ </p>
+<p>
+ If a type has a trivial default-constructor then the constructor have no
+ effect: calls to the constructor can be safely omitted. Note that using meta-programming
+ to omit a call to a single trivial-constructor call is of no benefit whatsoever.
+ However, if loops and/or exception handling code can also be omitted, then
+ some benefit in terms of code size and speed can be obtained.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial-specialization of class templates, then this template
+ can not be used with function types.
+ </p>
+<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 intrinsics
+ to detect user-defined classes with trivial constructors.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 12.1p6.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">has_trivial_constructor</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_constructor</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></code> inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_constructor</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">*&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_constructor</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(*)(</span><span class="keyword">long</span><span class="special">)&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_constructor</span><span class="special">&lt;</span><span class="identifier">MyClass</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_constructor</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code>
+ is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_trivial_assign.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_trivial_copy.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_copy.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_copy.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,133 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>has_trivial_copy</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="has_trivial_constructor.html" title="has_trivial_constructor">
+<link rel="next" href="has_trivial_cp_cons.html" title="has_trivial_copy_constructor">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_trivial_constructor.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_trivial_cp_cons.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.has_trivial_copy"></a> has_trivial_copy
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">has_trivial_copy</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">has_trivial_copy_constructor</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ type with a trivial copy-constructor then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ These two traits are synonyms for each other.
+ </p>
+<p>
+ If a type has a trivial copy-constructor then the constructor has the same
+ effect as copying the bits of one object to the other: calls to the constructor
+ can be safely replaced with a call to <code class="computeroutput"><span class="identifier">memcpy</span></code>.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial-specialization of class templates, then this template
+ can not be used with function types.
+ </p>
+<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 intrinsics
+ to detect user-defined classes with trivial constructors.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 12.8p6.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">has_trivial_copy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_copy</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_copy</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">*&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_copy</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(*)(</span><span class="keyword">long</span><span class="special">)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_copy</span><span class="special">&lt;</span><span class="identifier">MyClass</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_copy</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_trivial_constructor.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_trivial_cp_cons.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_cp_cons.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_cp_cons.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>has_trivial_copy_constructor</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="has_trivial_copy.html" title="has_trivial_copy">
+<link rel="next" href="has_trivial_def_cons.html" title="has_trivial_default_constructor">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_trivial_copy.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_trivial_def_cons.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.has_trivial_cp_cons"></a> has_trivial_copy_constructor
+</h3></div></div></div>
+<p>
+ See has_trivial_copy.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_trivial_copy.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_trivial_def_cons.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_def_cons.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_def_cons.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>has_trivial_default_constructor</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="has_trivial_cp_cons.html" title="has_trivial_copy_constructor">
+<link rel="next" href="has_trivial_destructor.html" title="has_trivial_destructor">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_trivial_cp_cons.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_trivial_destructor.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.has_trivial_def_cons"></a> has_trivial_default_constructor
+</h3></div></div></div>
+<p>
+ See has_trivial_constructor.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_trivial_cp_cons.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_trivial_destructor.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_destructor.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_trivial_destructor.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,130 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>has_trivial_destructor</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="has_trivial_def_cons.html" title="has_trivial_default_constructor">
+<link rel="next" href="has_virtual_destructor.html" title="has_virtual_destructor">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_trivial_def_cons.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_virtual_destructor.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.has_trivial_destructor"></a> has_trivial_destructor
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">has_trivial_destructor</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ type with a trivial destructor then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ If a type has a trivial destructor then the destructor has no effect: calls
+ to the destructor can be safely omitted. Note that using meta-programming
+ to omit a call to a single trivial-constructor call is of no benefit whatsoever.
+ However, if loops and/or exception handling code can also be omitted, then
+ some benefit in terms of code size and speed can be obtained.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial-specialization of class templates, then this template
+ can not be used with function types.
+ </p>
+<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 intrinsics
+ to detect user-defined classes with trivial constructors.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 12.4p3.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">has_trivial_destructor</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_destructor</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></code> inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_destructor</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">*&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_destructor</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(*)(</span><span class="keyword">long</span><span class="special">)&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_destructor</span><span class="special">&lt;</span><span class="identifier">MyClass</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">has_trivial_destructor</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code>
+ is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_trivial_def_cons.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="has_virtual_destructor.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_virtual_destructor.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/has_virtual_destructor.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,69 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>has_virtual_destructor</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="has_trivial_destructor.html" title="has_trivial_destructor">
+<link rel="next" href="integral_constant.html" title="integral_constant">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_trivial_destructor.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="integral_constant.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.has_virtual_destructor"></a> has_virtual_destructor
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">has_virtual_destructor</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ type with a virtual destructor then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> This trait is provided
+ for completeness, since it's part of the 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 has the necessary intrinsics.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 12.4.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">has_virtual_destructor</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_trivial_destructor.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="integral_constant.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/integral_constant.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/integral_constant.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>integral_constant</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="has_virtual_destructor.html" title="has_virtual_destructor">
+<link rel="next" href="integral_promotion.html" title="integral_promotion">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_virtual_destructor.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="integral_promotion.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.integral_constant"></a> integral_constant
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">val</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">integral_constant</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">integral_constant</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">val</span><span class="special">&gt;</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">T</span> <span class="identifier">value</span> <span class="special">=</span> <span class="identifier">val</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="keyword">typedef</span> <span class="identifier">integral_constant</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span> <span class="keyword">true</span><span class="special">&gt;</span> <span class="identifier">true_type</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">integral_constant</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span> <span class="keyword">false</span><span class="special">&gt;</span> <span class="identifier">false_type</span><span class="special">;</span>
+</pre>
+<p>
+ Class template <code class="computeroutput"><span class="identifier">integral_constant</span></code>
+ is the common base class for all the value-based type traits. The two typedef's
+ <code class="computeroutput"><span class="identifier">true_type</span></code> and <code class="computeroutput"><span class="identifier">false_type</span></code> are provided for convenience:
+ most of the value traits are Boolean properties and so will inherit from
+ one of these.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_virtual_destructor.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="integral_promotion.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/integral_promotion.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/integral_promotion.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,126 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>integral_promotion</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="integral_constant.html" title="integral_constant">
+<link rel="next" href="is_abstract.html" title="is_abstract">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="integral_constant.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_abstract.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.integral_promotion"></a> integral_promotion
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">integral_promotion</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> If integral promotion can be applied
+ to an rvalue of type <code class="computeroutput"><span class="identifier">T</span></code>, then
+ applies integral promotion to <code class="computeroutput"><span class="identifier">T</span></code>
+ and keeps cv-qualifiers of <code class="computeroutput"><span class="identifier">T</span></code>,
+ otherwise leaves <code class="computeroutput"><span class="identifier">T</span></code> unchanged.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 4.5 except 4.5/3
+ (integral bit-field).
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">integral_promotion</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id515954"></a><p class="title"><b>Table 1.14. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">integral_promotion</span><span class="special">&lt;</span><span class="keyword">short</span>
+ <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">integral_promotion</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">short</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">integral_promotion</span><span class="special">&lt;</span><span class="keyword">enum</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">float_round_style</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="integral_constant.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_abstract.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_abstract.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_abstract.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,119 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_abstract</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="integral_promotion.html" title="integral_promotion">
+<link rel="next" href="is_arithmetic.html" title="is_arithmetic">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="integral_promotion.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_arithmetic.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_abstract"></a> is_abstract
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_abstract</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ abstract type then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 10.3.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_abstract</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> The compiler must
+ support DR337 (as of April 2005: GCC 3.4, VC++ 7.1 (and later), Intel C++
+ 7 (and later), and Comeau 4.3.2). Otherwise behaves the same as is_polymorphic;
+ this is the "safe fallback position" for which polymorphic types
+ are always regarded as potentially abstract. The macro BOOST_NO_IS_ABSTRACT
+ is used to signify that the implementation is buggy, users should check for
+ this in their own code if the "safe fallback" is not suitable for
+ their particular use-case.
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ Given: <code class="computeroutput"><span class="keyword">class</span> <span class="identifier">abc</span><span class="special">{</span> <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">abc</span><span class="special">()</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="special">};</span></code>
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_abstract</span><span class="special">&lt;</span><span class="identifier">abc</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_abstract</span><span class="special">&lt;</span><span class="identifier">abc</span><span class="special">&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_abstract</span><span class="special">&lt;</span><span class="identifier">abc</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_abstract</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="integral_promotion.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_arithmetic.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_arithmetic.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_arithmetic.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,102 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_arithmetic</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_abstract.html" title="is_abstract">
+<link rel="next" href="is_array.html" title="is_array">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_abstract.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_array.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_arithmetic"></a> is_arithmetic
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_arithmetic</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ arithmetic type then inherits from true_type,
+ otherwise inherits from false_type.
+ Arithmetic types include integral and floating point types (see also is_integral and
+ is_floating_point).
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.1p8.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_arithmetic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_arithmetic</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_arithmetic</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_arithmetic</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_arithmetic</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_abstract.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_array.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_array.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_array.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,105 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_array</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_arithmetic.html" title="is_arithmetic">
+<link rel="next" href="is_base_of.html" title="is_base_of">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_arithmetic.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_base_of.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_array"></a> is_array
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_array</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ array type then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.2 and 8.3.4.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_array</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial-specialization of class templates, then this template
+ can give the wrong result with function types.
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_array</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">[</span><span class="number">2</span><span class="special">]&gt;</span></code> inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_array</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">[</span><span class="number">2</span><span class="special">][</span><span class="number">3</span><span class="special">]&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_array</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">[]&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_array</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_arithmetic.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_base_of.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_base_of.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_base_of.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,154 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_base_of</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_array.html" title="is_array">
+<link rel="next" href="is_class.html" title="is_class">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_array.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_class.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_base_of"></a> is_base_of
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Base</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Derived</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_base_of</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If Base is base class of type
+ Derived or if both types are the same then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ This template will detect non-public base classes, and ambiguous base classes.
+ </p>
+<p>
+ Note that <code class="computeroutput"><span class="identifier">is_base_of</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">,</span><span class="identifier">X</span><span class="special">&gt;</span></code> will always inherit from true_type.
+ <span class="bold"><strong>This is the case even if <code class="computeroutput"><span class="identifier">X</span></code>
+ is not a class type</strong></span>. This is a change in behaviour from Boost-1.33
+ in order to track the Technical Report on C++ Library Extensions.
+ </p>
+<p>
+ Types <code class="computeroutput"><span class="identifier">Base</span></code> and <code class="computeroutput"><span class="identifier">Derived</span></code> must not be incomplete types.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 10.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_base_of</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial-specialization of class templates, then this template
+ can not be used with function types. There are some older compilers which
+ will produce compiler errors if <code class="computeroutput"><span class="identifier">Base</span></code>
+ is a private base class of <code class="computeroutput"><span class="identifier">Derived</span></code>,
+ or if <code class="computeroutput"><span class="identifier">Base</span></code> is an ambiguous
+ base of <code class="computeroutput"><span class="identifier">Derived</span></code>. These compilers
+ include Borland C++, older versions of Sun Forte C++, Digital Mars C++, and
+ older versions of EDG based compilers.
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ Given: <code class="computeroutput"> <span class="keyword">class</span> <span class="identifier">Base</span><span class="special">{};</span> <span class="keyword">class</span> <span class="identifier">Derived</span> <span class="special">:</span>
+ <span class="keyword">public</span> <span class="identifier">Base</span><span class="special">{};</span></code>
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_base_of</span><span class="special">&lt;</span><span class="identifier">Base</span><span class="special">,</span> <span class="identifier">Derived</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_base_of</span><span class="special">&lt;</span><span class="identifier">Base</span><span class="special">,</span> <span class="identifier">Derived</span><span class="special">&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_base_of</span><span class="special">&lt;</span><span class="identifier">Base</span><span class="special">,</span> <span class="identifier">Derived</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_base_of</span><span class="special">&lt;</span><span class="identifier">Base</span><span class="special">,</span> <span class="identifier">Derived</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_base_of</span><span class="special">&lt;</span><span class="identifier">Base</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>: a class is regarded as it's
+ own base.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_base_of</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_array.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_class.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_class.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_class.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,138 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_class</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_base_of.html" title="is_base_of">
+<link rel="next" href="is_complex.html" title="is_complex">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_base_of.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_complex.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_class"></a> is_class
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_class</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ class type then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.2 and 9.2.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_class</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> 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.
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ Given: <code class="computeroutput"><span class="keyword">class</span> <span class="identifier">MyClass</span><span class="special">;</span></code> then:
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_class</span><span class="special">&lt;</span><span class="identifier">MyClass</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_class</span><span class="special">&lt;</span><span class="identifier">MyClass</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_class</span><span class="special">&lt;</span><span class="identifier">MyClass</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_class</span><span class="special">&lt;</span><span class="identifier">MyClass</span><span class="special">&amp;&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_class</span><span class="special">&lt;</span><span class="identifier">MyClass</span><span class="special">*&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_class</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_base_of.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_complex.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_complex.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_complex.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,60 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_complex</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_class.html" title="is_class">
+<link rel="next" href="is_compound.html" title="is_compound">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_class.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_compound.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_complex"></a> is_complex
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_complex</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If <code class="computeroutput"><span class="identifier">T</span></code>
+ is a complex number type then true (of type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span></code>
+ for some type <code class="computeroutput"><span class="identifier">U</span></code>), otherwise
+ false.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 26.2.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_complex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_class.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_compound.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_compound.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_compound.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,121 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_compound</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_complex.html" title="is_complex">
+<link rel="next" href="is_const.html" title="is_const">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_complex.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_const.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_compound"></a> is_compound
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_compound</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ compound type then inherits from true_type,
+ otherwise inherits from false_type.
+ Any type that is not a fundamental type is a compound type (see also is_fundamental).
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.2.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_compound</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_compound</span><span class="special">&lt;</span><span class="identifier">MyClass</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_compound</span><span class="special">&lt;</span><span class="identifier">MyEnum</span><span class="special">&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_compound</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_compound</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_compound</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_compound</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_complex.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_const.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_const.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_const.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,131 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_const</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_compound.html" title="is_compound">
+<link rel="next" href="is_convertible.html" title="is_convertible">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_compound.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_convertible.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_const"></a> is_const
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_const</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (top level) const-qualified
+ type then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.3.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_const</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_const</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&gt;</span></code> inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_const</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_const</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_const</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">*&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>false</em></span>:
+ the const-qualifier is not at the top level in this case.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_const</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&amp;&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>false</em></span>:
+ the const-qualifier is not at the top level in this case.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_const</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_const</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_compound.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_convertible.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_convertible.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_convertible.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,172 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_convertible</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_const.html" title="is_const">
+<link rel="next" href="is_empty.html" title="is_empty">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_const.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_empty.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_convertible"></a> is_convertible
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">From</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">To</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_convertible</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If an imaginary lvalue of type
+ <code class="computeroutput"><span class="identifier">From</span></code> is convertible to type
+ <code class="computeroutput"><span class="identifier">To</span></code> then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ Type From must not be an incomplete type.
+ </p>
+<p>
+ Type To must not be an incomplete, or function type.
+ </p>
+<p>
+ No types are considered to be convertible to array types or abstract-class
+ types.
+ </p>
+<p>
+ This template can not detect whether a converting-constructor is <code class="computeroutput"><span class="keyword">public</span></code> or not: if type <code class="computeroutput"><span class="identifier">To</span></code>
+ has a <code class="computeroutput"><span class="keyword">private</span></code> converting constructor
+ from type <code class="computeroutput"><span class="identifier">From</span></code> then instantiating
+ <code class="computeroutput"><span class="identifier">is_convertible</span><span class="special">&lt;</span><span class="identifier">From</span><span class="special">,</span> <span class="identifier">To</span><span class="special">&gt;</span></code>
+ will produce a compiler error. For this reason <code class="computeroutput"><span class="identifier">is_convertible</span></code>
+ can not be used to determine whether a type has a <code class="computeroutput"><span class="keyword">public</span></code>
+ copy-constructor or not.
+ </p>
+<p>
+ This template will also produce compiler errors if the conversion is ambiguous,
+ for example:
+ </p>
+<pre class="programlisting">
+<span class="keyword">struct</span> <span class="identifier">A</span> <span class="special">{};</span>
+<span class="keyword">struct</span> <span class="identifier">B</span> <span class="special">:</span> <span class="identifier">A</span> <span class="special">{};</span>
+<span class="keyword">struct</span> <span class="identifier">C</span> <span class="special">:</span> <span class="identifier">A</span> <span class="special">{};</span>
+<span class="keyword">struct</span> <span class="identifier">D</span> <span class="special">:</span> <span class="identifier">B</span><span class="special">,</span> <span class="identifier">C</span> <span class="special">{};</span>
+<span class="comment">// This produces a compiler error, the conversion is ambiguous:
+</span><span class="keyword">bool</span> <span class="keyword">const</span> <span class="identifier">y</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_convertible</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">*,</span><span class="identifier">A</span><span class="special">*&gt;::</span><span class="identifier">value</span><span class="special">;</span>
+</pre>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 4 and 8.5.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> This template is
+ currently broken with Borland C++ Builder 5 (and earlier), for constructor-based
+ conversions, and for the Metrowerks 7 (and earlier) compiler in all cases.
+ If the compiler does not support <code class="computeroutput">is_abstract</code>,
+ then the template parameter <code class="computeroutput"><span class="identifier">To</span></code>
+ must not be an abstract type.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_convertible</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_convertible</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">double</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_convertible</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_convertible</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*</span> <span class="keyword">const</span><span class="special">,</span> <span class="keyword">int</span><span class="special">*&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_convertible</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">*,</span> <span class="keyword">int</span><span class="special">*&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>false</em></span>:
+ the conversion would require a <code class="computeroutput"><span class="keyword">const_cast</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_convertible</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&amp;,</span> <span class="keyword">long</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_convertible</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_convertible</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_const.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_empty.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_empty.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_empty.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,134 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_empty</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_convertible.html" title="is_convertible">
+<link rel="next" href="is_enum.html" title="is_enum">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_convertible.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_enum.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_empty"></a> is_empty
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_empty</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is an empty class type then
+ inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 10p5.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_empty</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> In order to correctly
+ detect empty classes this trait relies on either:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ the compiler implementing zero sized empty base classes, or
+ </li>
+<li>
+ the compiler providing intrinsics
+ to detect empty classes.
+ </li>
+</ul></div>
+<p>
+ Can not be used with incomplete types.
+ </p>
+<p>
+ Can not be used with union types, until is_union can be made to work.
+ </p>
+<p>
+ If the compiler does not support partial-specialization of class templates,
+ then this template can not be used with abstract types.
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ Given: <code class="computeroutput"><span class="keyword">struct</span> <span class="identifier">empty_class</span>
+ <span class="special">{};</span></code>
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_empty</span><span class="special">&lt;</span><span class="identifier">empty_class</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_empty</span><span class="special">&lt;</span><span class="identifier">empty_class</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_empty</span><span class="special">&lt;</span><span class="identifier">empty_class</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_empty</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_convertible.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_enum.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_enum.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_enum.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,138 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_enum</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_empty.html" title="is_empty">
+<link rel="next" href="is_floating_point.html" title="is_floating_point">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_empty.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_floating_point.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_enum"></a> is_enum
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_enum</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ enum type then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.2 and 7.2.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_enum</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> Requires a correctly
+ functioning is_convertible
+ template; this means that is_enum is currently broken under Borland C++ Builder
+ 5, and for the Metrowerks compiler prior to version 8, other compilers should
+ handle this template just fine.
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ Given: <code class="computeroutput"><span class="keyword">enum</span> <span class="identifier">my_enum</span>
+ <span class="special">{</span> <span class="identifier">one</span><span class="special">,</span> <span class="identifier">two</span> <span class="special">};</span></code>
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_enum</span><span class="special">&lt;</span><span class="identifier">my_enum</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_enum</span><span class="special">&lt;</span><span class="identifier">my_enum</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_enum</span><span class="special">&lt;</span><span class="identifier">my_enum</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_enum</span><span class="special">&lt;</span><span class="identifier">my_enum</span><span class="special">&amp;&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_enum</span><span class="special">&lt;</span><span class="identifier">my_enum</span><span class="special">*&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_enum</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_empty.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_floating_point.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_floating_point.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_floating_point.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,100 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_floating_point</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_enum.html" title="is_enum">
+<link rel="next" href="is_function.html" title="is_function">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_enum.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_function.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_floating_point"></a> is_floating_point
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_floating_point</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ floating point type then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.1p8.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_floating_point</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_floating_point</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_floating_point</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_floating_point</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_floating_point</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_enum.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_function.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_function.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_function.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,213 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_function</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_floating_point.html" title="is_floating_point">
+<link rel="next" href="is_fundamental.html" title="is_fundamental">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_floating_point.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_fundamental.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_function"></a> is_function
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_function</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ function type then inherits from true_type,
+ otherwise inherits from false_type.
+ Note that this template does not detect <span class="emphasis"><em>pointers to functions</em></span>,
+ or <span class="emphasis"><em>references to functions</em></span>, these are detected by is_pointer and is_reference respectively:
+ </p>
+<pre class="programlisting">
+<span class="keyword">typedef</span> <span class="keyword">int</span> <span class="identifier">f1</span><span class="special">();</span> <span class="comment">// f1 is of function type.
+</span><span class="keyword">typedef</span> <span class="keyword">int</span> <span class="special">(</span><span class="identifier">f2</span><span class="special">*)();</span> <span class="comment">// f2 is a pointer to a function.
+</span><span class="keyword">typedef</span> <span class="keyword">int</span> <span class="special">(</span><span class="identifier">f3</span><span class="special">&amp;)();</span> <span class="comment">// f3 is a reference to a function.
+</span></pre>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.2p1 and 8.3.5.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_function</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_function</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="keyword">void</span><span class="special">)&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_function</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="special">(</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">int</span><span class="special">)&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_function</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="special">(</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">int</span><span class="special">)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_function</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="special">(*)(</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">int</span><span class="special">)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>: the argument in this case
+ is a pointer type, not a function type.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_function</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="special">(&amp;)(</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">int</span><span class="special">)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>: the argument in this case
+ is a reference to a function, not a function type.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_function</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)(</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">int</span><span class="special">)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>: the argument in this case
+ is a pointer to a member function.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_function</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../../../doc/html/images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ </p>
+<p>
+ Don't confuse function-types with pointers to functions:
+ </p>
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">int</span>
+ <span class="identifier">f</span><span class="special">(</span><span class="keyword">double</span><span class="special">);</span></code>
+ </p>
+<p>
+ </p>
+<p>
+ defines a function type,
+ </p>
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">f</span> <span class="identifier">foo</span><span class="special">;</span></code>
+ </p>
+<p>
+ </p>
+<p>
+ declares a prototype for a function of type <code class="computeroutput"><span class="identifier">f</span></code>,
+ </p>
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">f</span><span class="special">*</span>
+ <span class="identifier">pf</span> <span class="special">=</span>
+ <span class="identifier">foo</span><span class="special">;</span></code>
+ </p>
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">f</span><span class="special">&amp;</span>
+ <span class="identifier">fr</span> <span class="special">=</span>
+ <span class="identifier">foo</span><span class="special">;</span></code>
+ </p>
+<p>
+ </p>
+<p>
+ declares a pointer and a reference to the function <code class="computeroutput"><span class="identifier">foo</span></code>.
+ </p>
+<p>
+ </p>
+<p>
+ If you want to detect whether some type is a pointer-to-function then
+ use:
+ </p>
+<p>
+ </p>
+<p>
+ <code class="computeroutput">is_function<span class="special">&lt;</span>remove_pointer<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;::</span><span class="identifier">value</span>
+ <span class="special">&amp;&amp;</span> is_pointer<span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
+ </p>
+<p>
+ </p>
+<p>
+ or for pointers to member functions you can just use is_member_function_pointer
+ directly.
+ </p>
+<p>
+ </p>
+</td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_floating_point.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_fundamental.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_fundamental.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_fundamental.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,105 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_fundamental</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_function.html" title="is_function">
+<link rel="next" href="is_integral.html" title="is_integral">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_function.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_integral.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_fundamental"></a> is_fundamental
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_fundamental</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ fundamental type then inherits from true_type,
+ otherwise inherits from false_type.
+ Fundamental types include integral, floating point and void types (see also
+ is_integral,
+ is_floating_point
+ and is_void)
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.1.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_fundamental</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_fundamental</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">)&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_fundamental</span><span class="special">&lt;</span><span class="keyword">double</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_fundamental</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_fundamental</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_function.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_integral.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_integral.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_integral.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,101 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_integral</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_fundamental.html" title="is_fundamental">
+<link rel="next" href="is_member_function_pointer.html" title="is_member_function_pointer">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_fundamental.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_member_function_pointer.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_integral"></a> is_integral
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_integral</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ integral type then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.1p7.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_integral</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_integral</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_integral</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_integral</span><span class="special">&lt;</span><span class="keyword">long</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_integral</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_fundamental.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_member_function_pointer.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_member_function_pointer.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_member_function_pointer.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,115 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_member_function_pointer</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_integral.html" title="is_integral">
+<link rel="next" href="is_member_object_pointer.html" title="is_member_object_pointer">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_integral.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_member_object_pointer.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_member_function_pointer"></a><a href="is_member_function_pointer.html" title="is_member_function_pointer">
+ is_member_function_pointer</a>
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_member_function_pointer</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ pointer to a member function then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.2 and 8.3.3.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_member_function_pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_member_function_pointer</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)(</span><span class="keyword">void</span><span class="special">)&gt;</span></code> inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_member_function_pointer</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)(</span><span class="keyword">char</span><span class="special">)&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_member_function_pointer</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)(</span><span class="keyword">void</span><span class="special">)</span><span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_member_function_pointer</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>false</em></span>:
+ the argument in this case is a pointer to a data member and not a member
+ function, see is_member_object_pointer
+ and is_member_pointer
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_member_function_pointer</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code>
+ is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_integral.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_member_object_pointer.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_member_object_pointer.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_member_object_pointer.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,115 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_member_object_pointer</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_member_function_pointer.html" title="is_member_function_pointer">
+<link rel="next" href="is_member_pointer.html" title="is_member_pointer">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_member_function_pointer.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_member_pointer.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_member_object_pointer"></a><a href="is_member_object_pointer.html" title="is_member_object_pointer">
+ is_member_object_pointer</a>
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_member_object_pointer</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ pointer to a member object (a data member) then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.2 and 8.3.3.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_member_object_pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_member_object_pointer</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)&gt;</span></code> inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_member_object_pointer</span><span class="special">&lt;</span><span class="keyword">double</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_member_object_pointer</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">int</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_member_object_pointer</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)(</span><span class="keyword">void</span><span class="special">)&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>false</em></span>:
+ the argument in this case is a pointer to a member function and not a
+ member object, see is_member_function_pointer
+ and is_member_pointer
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_member_object_pointer</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code>
+ is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_member_function_pointer.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_member_pointer.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_member_pointer.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_member_pointer.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,101 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_member_pointer</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_member_object_pointer.html" title="is_member_object_pointer">
+<link rel="next" href="is_object.html" title="is_object">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_member_object_pointer.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_object.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_member_pointer"></a> is_member_pointer
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_member_pointer</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ pointer to a member (either a function or a data member) then inherits from
+ true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.2 and 8.3.3.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_member_pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_member_pointer</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_member_pointer</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)(</span><span class="keyword">char</span><span class="special">)&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_member_pointer</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)(</span><span class="keyword">void</span><span class="special">)</span><span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_member_pointer</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_member_object_pointer.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_object.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_object.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_object.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,144 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_object</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_member_pointer.html" title="is_member_pointer">
+<link rel="next" href="is_pod.html" title="is_pod">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_member_pointer.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_pod.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_object"></a> is_object
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_object</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ object type then inherits from true_type,
+ otherwise inherits from false_type.
+ All types are object types except references, void, and function types.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9p9.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_object</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_object</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_object</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(*)(</span><span class="keyword">void</span><span class="special">)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_object</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)(</span><span class="keyword">void</span><span class="special">)</span><span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_object</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">&amp;&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>: reference types are not
+ objects
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_object</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="keyword">double</span><span class="special">)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>: function types are not
+ objects
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_object</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">void</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>false</em></span>:
+ void is not an object type
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_object</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_member_pointer.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_pod.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_pod.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_pod.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,131 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_pod</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_object.html" title="is_object">
+<link rel="next" href="is_pointer.html" title="is_pointer">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_object.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_pointer.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_pod"></a> is_pod
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_pod</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ POD type then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ POD stands for "Plain old data". Arithmetic types, and enumeration
+ types, a pointers and pointer to members are all PODs. Classes and unions
+ can also be POD's if they have no non-static data members that are of reference
+ or non-POD type, no user defined constructors, no user defined assignment
+ operators, no private or protected non-static data members, no virtual functions
+ and no base classes. Finally, a cv-qualified POD is still a POD, as is an
+ array of PODs.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9p10 and 9p4 (Note
+ that POD's are also aggregates, see 8.5.1).
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial-specialization of class templates, then this template
+ 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.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_pod</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_pod</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_pod</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">*&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_pod</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(*)(</span><span class="keyword">long</span><span class="special">)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_pod</span><span class="special">&lt;</span><span class="identifier">MyClass</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_pod</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_object.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_pointer.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_pointer.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_pointer.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,144 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_pointer</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_pod.html" title="is_pod">
+<link rel="next" href="is_polymorphic.html" title="is_polymorphic">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_pod.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_polymorphic.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_pointer"></a> is_pointer
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_pointer</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ pointer type (includes function pointers, but excludes pointers to members)
+ then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.2p2 and 8.3.1.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_pointer</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_pointer</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">*</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_pointer</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(*)(</span><span class="keyword">long</span><span class="special">)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_pointer</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)(</span><span class="keyword">long</span><span class="special">)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_pointer</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_pointer</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../doc/html/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_pointer</span></code> detects "real"
+ pointer types only, and <span class="emphasis"><em>not</em></span> smart pointers. Users
+ should not specialise <code class="computeroutput"><span class="identifier">is_pointer</span></code>
+ for smart pointer types, as doing so may cause Boost (and other third
+ party) code to fail to function correctly. Users wanting a trait to detect
+ smart pointers should create their own. However, note that there is no
+ way in general to auto-magically detect smart pointer types, so such
+ a trait would have to be partially specialised for each supported smart
+ pointer type.
+ </p>
+<p>
+ </p>
+</td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_pod.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_polymorphic.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_polymorphic.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_polymorphic.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,117 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_polymorphic</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_pointer.html" title="is_pointer">
+<link rel="next" href="is_same.html" title="is_same">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_pointer.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_same.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_polymorphic"></a> is_polymorphic
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_polymorphic</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ polymorphic type then inherits from true_type,
+ otherwise inherits from false_type.
+ Type <code class="computeroutput"><span class="identifier">T</span></code> must be a complete
+ type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 10.3.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> The implementation
+ requires some knowledge of the compilers ABI, it does actually seem to work
+ with the majority of compilers though.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_polymorphic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ Given: <code class="computeroutput"><span class="keyword">class</span> <span class="identifier">poly</span><span class="special">{</span> <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">poly</span><span class="special">();</span> <span class="special">};</span></code>
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_polymorphic</span><span class="special">&lt;</span><span class="identifier">poly</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_polymorphic</span><span class="special">&lt;</span><span class="identifier">poly</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_polymorphic</span><span class="special">&lt;</span><span class="identifier">poly</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_polymorphic</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_pointer.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_same.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_reference.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_reference.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,108 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_reference</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_stateless.html" title="is_stateless">
+<link rel="next" href="is_union.html" title="is_union">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_stateless.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_union.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_reference"></a> is_reference
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_reference</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a reference pointer type
+ then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.2 and 8.3.2.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial-specialization of class templates, then this template
+ may report the wrong result for function types, and for types that are both
+ const and volatile qualified.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_reference</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_reference</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_reference</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(&amp;)(</span><span class="keyword">long</span><span class="special">)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span> (the argument in this case
+ is a reference to a function).
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_reference</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_stateless.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_union.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_same.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_same.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,122 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_same</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_polymorphic.html" title="is_polymorphic">
+<link rel="next" href="is_scalar.html" title="is_scalar">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_polymorphic.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_scalar.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_same"></a> is_same
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_same</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T and U are the same types
+ then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_same</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial-specialization of class templates, then this template
+ can not be used with abstract, incomplete or function types.
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_same</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_same</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_same</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_same</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_same</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;,</span> <span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_same</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_polymorphic.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_scalar.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_scalar.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_scalar.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,137 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_scalar</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_same.html" title="is_same">
+<link rel="next" href="is_signed.html" title="is_signed">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_same.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_signed.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_scalar"></a> is_scalar
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_scalar</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ scalar type then inherits from true_type,
+ otherwise inherits from false_type.
+ Scalar types include integral, floating point, enumeration, pointer, and
+ pointer-to-member types.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9p10.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_scalar</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial-specialization of class templates, then this template
+ can not be used with function types.
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_scalar</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_scalar</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_scalar</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_scalar</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(*)(</span><span class="keyword">long</span><span class="special">)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_scalar</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)(</span><span class="keyword">long</span><span class="special">)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_scalar</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="special">(</span><span class="identifier">MyClass</span><span class="special">::*)&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_scalar</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_same.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_signed.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_signed.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_signed.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,131 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_signed</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_scalar.html" title="is_scalar">
+<link rel="next" href="is_stateless.html" title="is_stateless">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_scalar.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_stateless.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_signed"></a> is_signed
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_signed</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is an signed integer type
+ or an enumerated type with an underlying signed integer type, then inherits
+ from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.1, 7.2.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_signed</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_signed</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_signed</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_signed</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_signed</span><span class="special">&lt;</span><span class="identifier">myclass</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_signed</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ whose value depends upon the signedness of type <code class="computeroutput"><span class="keyword">char</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_signed</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">long</span><span class="special">&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_signed</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_scalar.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_stateless.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_stateless.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_stateless.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,87 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_stateless</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_signed.html" title="is_signed">
+<link rel="next" href="is_reference.html" title="is_reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_signed.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_stateless"></a> is_stateless
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_stateless</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> Ff T is a stateless type then
+ inherits from true_type,
+ otherwise from false_type.
+ </p>
+<p>
+ Type T must be a complete type.
+ </p>
+<p>
+ A stateless type is a type that has no storage and whose constructors and
+ destructors are trivial. That means that <code class="computeroutput"><span class="identifier">is_stateless</span></code>
+ only inherits from true_type
+ if the following expression is <code class="computeroutput"><span class="keyword">true</span></code>:
+ </p>
+<pre class="programlisting">
+<span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_trivial_constructor</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span>
+<span class="special">&amp;&amp;</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_trivial_copy</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span>
+<span class="special">&amp;&amp;</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_trivial_destructor</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span>
+<span class="special">&amp;&amp;</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_class</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span>
+<span class="special">&amp;&amp;</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_empty</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span>
+</pre>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9p10.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_stateless</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial-specialization of class templates, then this template
+ can not be used with function types.
+ </p>
+<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 intrinsics
+ to make this template work automatically.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_signed.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_union.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_union.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,124 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_union</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_reference.html" title="is_reference">
+<link rel="next" href="is_unsigned.html" title="is_unsigned">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_unsigned.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_union"></a> is_union
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_union</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ union type then inherits from true_type,
+ otherwise inherits from false_type.
+ Currently requires some kind of compiler support, otherwise unions are identified
+ as classes.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.2 and 9.5.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> 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.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_union</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_union</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_union</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">void</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_union</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_union</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">*&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_union</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_unsigned.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_unsigned.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_unsigned.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,133 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_unsigned</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_union.html" title="is_union">
+<link rel="next" href="is_void.html" title="is_void">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_union.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_void.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_unsigned"></a> is_unsigned
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_unsigned</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is an unsigned integer type
+ or an enumerated type with an underlying unsigned integer type, then inherits
+ from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.1, 7.2.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_unsigned</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_unsigned</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">&gt;</span></code> inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_unsigned</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">int</span>
+ <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_unsigned</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_unsigned</span><span class="special">&lt;</span><span class="identifier">myclass</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_unsigned</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ whose value depends upon the signedness of type <code class="computeroutput"><span class="keyword">char</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_unsigned</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">long</span>
+ <span class="keyword">long</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_unsigned</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_union.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_void.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_void.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_void.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,111 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_void</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_unsigned.html" title="is_unsigned">
+<link rel="next" href="is_volatile.html" title="is_volatile">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_unsigned.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_volatile.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_void"></a> is_void
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_void</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (possibly cv-qualified)
+ void type then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.1p9.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_void</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_void</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">&gt;</span></code>
+ inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_void</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">void</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_void</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_void</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">*&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>false</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_void</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_unsigned.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="is_volatile.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_volatile.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_volatile.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,111 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>is_volatile</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_void.html" title="is_void">
+<link rel="next" href="make_signed.html" title="make_signed">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_void.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="make_signed.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.is_volatile"></a> is_volatile
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_volatile</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code>true_type-or-false_type</code></em> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> If T is a (top level) volatile-qualified
+ type then inherits from true_type,
+ otherwise inherits from false_type.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.3.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_volatile</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_volatile</span><span class="special">&lt;</span><span class="keyword">volatile</span> <span class="keyword">int</span><span class="special">&gt;</span></code> inherits from <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_volatile</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">volatile</span>
+ <span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">true_type</code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_volatile</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*</span> <span class="keyword">volatile</span><span class="special">&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>true</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_volatile</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">volatile</span><span class="special">*&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>false</em></span>:
+ the volatile qualifier is not at the top level in this case.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">is_volatile</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="keyword">bool</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_void.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="make_signed.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/make_signed.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/make_signed.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,157 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>make_signed</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="is_volatile.html" title="is_volatile">
+<link rel="next" href="make_unsigned.html" title="make_unsigned">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_volatile.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="make_unsigned.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.make_signed"></a> make_signed
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">make_signed</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> If T is a signed integer type then
+ the same type as T, if T is an unsigned integer type then the corresponding
+ signed type. Otherwise if T is an enumerated or character type (char or wchar_t)
+ then a signed integer type with the same width as T.
+ </p>
+<p>
+ If T has any cv-qualifiers then these are also present on the result type.
+ </p>
+<p>
+ <span class="bold"><strong>Requires:</strong></span> T must be an integer or enumerated
+ type, and must not be the type bool.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.1.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">make_signed</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id536345"></a><p class="title"><b>Table 1.15. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">make_signed</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">make_signed</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">int</span>
+ <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">make_signed</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">unsigned</span>
+ <span class="keyword">long</span> <span class="keyword">long</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">const</span> <span class="keyword">long</span>
+ <span class="keyword">long</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">make_signed</span><span class="special">&lt;</span><span class="identifier">my_enum</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A signed integer type with the same width as the enum.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">make_signed</span><span class="special">&lt;</span><span class="keyword">wchar_t</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A signed integer type with the same width as wchar_t.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_volatile.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="make_unsigned.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/make_unsigned.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/make_unsigned.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,158 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>make_unsigned</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="make_signed.html" title="make_signed">
+<link rel="next" href="promote.html" title="promote">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="make_signed.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="promote.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.make_unsigned"></a> make_unsigned
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">make_unsigned</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> If T is a unsigned integer type then
+ the same type as T, if T is an signed integer type then the corresponding
+ unsigned type. Otherwise if T is an enumerated or character type (char or
+ wchar_t) then an unsigned integer type with the same width as T.
+ </p>
+<p>
+ If T has any cv-qualifiers then these are also present on the result type.
+ </p>
+<p>
+ <span class="bold"><strong>Requires:</strong></span> T must be an integer or enumerated
+ type, and must not be the type bool.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.1.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">make_unsigned</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id536978"></a><p class="title"><b>Table 1.16. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">make_signed</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">make_signed</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">int</span>
+ <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">int</span>
+ <span class="keyword">const</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">make_signed</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">unsigned</span>
+ <span class="keyword">long</span> <span class="keyword">long</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">const</span> <span class="keyword">unsigned</span>
+ <span class="keyword">long</span> <span class="keyword">long</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">make_signed</span><span class="special">&lt;</span><span class="identifier">my_enum</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ An unsigned integer type with the same width as the enum.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">make_signed</span><span class="special">&lt;</span><span class="keyword">wchar_t</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ An unsigned integer type with the same width as wchar_t.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="make_signed.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="promote.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/promote.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/promote.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,127 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>promote</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="make_unsigned.html" title="make_unsigned">
+<link rel="next" href="rank.html" title="rank">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="make_unsigned.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="rank.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.promote"></a> promote
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">promote</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> If integral or floating point promotion
+ can be applied to an rvalue of type <code class="computeroutput"><span class="identifier">T</span></code>,
+ then applies integral and floating point promotions to <code class="computeroutput"><span class="identifier">T</span></code>
+ and keeps cv-qualifiers of <code class="computeroutput"><span class="identifier">T</span></code>,
+ otherwise leaves <code class="computeroutput"><span class="identifier">T</span></code> unchanged.
+ See also integral_promotion
+ and floating_point_promotion.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 4.5 except 4.5/3
+ (integral bit-field) and 4.6.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">promote</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id537680"></a><p class="title"><b>Table 1.17. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">promote</span><span class="special">&lt;</span><span class="keyword">short</span> <span class="keyword">volatile</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">volatile</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">promote</span><span class="special">&lt;</span><span class="keyword">float</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">double</span> <span class="keyword">const</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">promote</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">short</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="make_unsigned.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="rank.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/rank.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/rank.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,122 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>rank</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="promote.html" title="promote">
+<link rel="next" href="remove_all_extents.html" title="remove_all_extents">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="promote.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remove_all_extents.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.rank"></a> rank
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">rank</span> <span class="special">:</span> <span class="keyword">public</span> integral_constant<span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="identifier">RANK</span><span class="special">(</span><span class="identifier">T</span><span class="special">)&gt;</span> <span class="special">{};</span>
+</pre>
+<p>
+ <span class="bold"><strong>Inherits:</strong></span> Class template rank inherits from
+ <code class="computeroutput">integral_constant<span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="identifier">RANK</span><span class="special">(</span><span class="identifier">T</span><span class="special">)&gt;</span></code>,
+ where <code class="computeroutput"><span class="identifier">RANK</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code> is the
+ number of array dimensions in type <code class="computeroutput"><span class="identifier">T</span></code>.
+ </p>
+<p>
+ If <code class="computeroutput"><span class="identifier">T</span></code> is not an array type,
+ then <code class="computeroutput"><span class="identifier">RANK</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code> is zero.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">rank</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<p>
+ <span class="bold"><strong>Examples:</strong></span>
+ </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">rank</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">[]&gt;</span></code>
+ inherits from <code class="computeroutput">integral_constant<span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="number">1</span><span class="special">&gt;</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">rank</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">[</span><span class="number">2</span><span class="special">][</span><span class="number">3</span><span class="special">][</span><span class="number">4</span><span class="special">]&gt;::</span><span class="identifier">type</span></code> is the type <code class="computeroutput">integral_constant<span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">,</span> <span class="number">3</span><span class="special">&gt;</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">rank</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">[</span><span class="number">1</span><span class="special">]&gt;::</span><span class="identifier">value</span></code>
+ is an integral constant expression that evaluates to <span class="emphasis"><em>1</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">rank</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">[][</span><span class="number">2</span><span class="special">]&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>2</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">rank</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&gt;::</span><span class="identifier">value</span></code> is an integral constant expression
+ that evaluates to <span class="emphasis"><em>0</em></span>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <code class="computeroutput"><span class="identifier">rank</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value_type</span></code> is the type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>.
+ </p>
+<p>
+ </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="promote.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remove_all_extents.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_all_extents.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_all_extents.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,154 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>remove_all_extents</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="rank.html" title="rank">
+<link rel="next" href="remove_const.html" title="remove_const">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rank.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remove_const.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.remove_all_extents"></a> remove_all_extents
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">remove_all_extents</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> If <code class="computeroutput"><span class="identifier">T</span></code>
+ is an array type, then removes all of the array bounds on <code class="computeroutput"><span class="identifier">T</span></code>,
+ otherwise leaves <code class="computeroutput"><span class="identifier">T</span></code> unchanged.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 8.3.4.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial specialization of class-templates then this template
+ will compile, but the member <code class="computeroutput"><span class="identifier">type</span></code>
+ will always be the same as type <code class="computeroutput"><span class="identifier">T</span></code>
+ except where <a href="../category/transform.html#boost_typetraits.category.transform.broken_compiler_workarounds_">compiler
+ workarounds</a> have been applied.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">remove_all_extents</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id539114"></a><p class="title"><b>Table 1.18. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_all_extents</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_all_extents</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">[</span><span class="number">2</span><span class="special">]&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_all_extents</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">[][</span><span class="number">2</span><span class="special">]&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_all_extents</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">[</span><span class="number">2</span><span class="special">][</span><span class="number">3</span><span class="special">][</span><span class="number">4</span><span class="special">]&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_all_extents</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">*&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span><span class="special">*</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rank.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remove_const.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_const.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_const.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,154 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>remove_const</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="remove_all_extents.html" title="remove_all_extents">
+<link rel="next" href="remove_cv.html" title="remove_cv">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_all_extents.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remove_cv.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.remove_const"></a> remove_const
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">remove_const</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> The same type as <code class="computeroutput"><span class="identifier">T</span></code>,
+ but with any <span class="emphasis"><em>top level</em></span> const-qualifier removed.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.3.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial specialization of class-templates then this template
+ will compile, but the member <code class="computeroutput"><span class="identifier">type</span></code>
+ will always be the same as type <code class="computeroutput"><span class="identifier">T</span></code>
+ except where <a href="../category/transform.html#boost_typetraits.category.transform.broken_compiler_workarounds_">compiler
+ workarounds</a> have been applied.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">remove_const</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id539837"></a><p class="title"><b>Table 1.19. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_const</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_const</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_const</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span>
+ <span class="keyword">volatile</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">volatile</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_const</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_const</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">*&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span><span class="special">*</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_all_extents.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remove_cv.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_cv.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_cv.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,154 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>remove_cv</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="remove_const.html" title="remove_const">
+<link rel="next" href="remove_extent.html" title="remove_extent">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_const.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remove_extent.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.remove_cv"></a> remove_cv
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">remove_cv</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> The same type as <code class="computeroutput"><span class="identifier">T</span></code>,
+ but with any <span class="emphasis"><em>top level</em></span> cv-qualifiers removed.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.3.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial specialization of class-templates then this template
+ will compile, but the member <code class="computeroutput"><span class="identifier">type</span></code>
+ will always be the same as type <code class="computeroutput"><span class="identifier">T</span></code>
+ except where <a href="../category/transform.html#boost_typetraits.category.transform.broken_compiler_workarounds_">compiler
+ workarounds</a> have been applied.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">remove_cv</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id540543"></a><p class="title"><b>Table 1.20. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_cv</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_cv</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_cv</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span>
+ <span class="keyword">volatile</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_cv</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_cv</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">*&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span><span class="special">*</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_const.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remove_extent.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_extent.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_extent.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,154 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>remove_extent</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="remove_cv.html" title="remove_cv">
+<link rel="next" href="remove_pointer.html" title="remove_pointer">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_cv.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remove_pointer.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.remove_extent"></a> remove_extent
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">remove_extent</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> If <code class="computeroutput"><span class="identifier">T</span></code>
+ is an array type, then removes the topmost array bound, otherwise leaves
+ <code class="computeroutput"><span class="identifier">T</span></code> unchanged.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 8.3.4.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial specialization of class-templates then this template
+ will compile, but the member <code class="computeroutput"><span class="identifier">type</span></code>
+ will always be the same as type <code class="computeroutput"><span class="identifier">T</span></code>
+ except where <a href="../category/transform.html#boost_typetraits.category.transform.broken_compiler_workarounds_">compiler
+ workarounds</a> have been applied.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">remove_extent</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id541248"></a><p class="title"><b>Table 1.21. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_extent</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_extent</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">[</span><span class="number">2</span><span class="special">]&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_extent</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">[</span><span class="number">2</span><span class="special">][</span><span class="number">4</span><span class="special">]&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">[</span><span class="number">4</span><span class="special">]</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_extent</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">[][</span><span class="number">2</span><span class="special">]&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">[</span><span class="number">2</span><span class="special">]</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_extent</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">*&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span><span class="special">*</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_cv.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remove_pointer.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_pointer.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_pointer.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,153 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>remove_pointer</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="remove_extent.html" title="remove_extent">
+<link rel="next" href="remove_reference.html" title="remove_reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_extent.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remove_reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.remove_pointer"></a> remove_pointer
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">remove_pointer</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> The same type as <code class="computeroutput"><span class="identifier">T</span></code>,
+ but with any pointer modifier removed.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 8.3.1.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial specialization of class-templates then this template
+ will compile, but the member <code class="computeroutput"><span class="identifier">type</span></code>
+ will always be the same as type <code class="computeroutput"><span class="identifier">T</span></code>
+ except where <a href="../category/transform.html#boost_typetraits.category.transform.broken_compiler_workarounds_">compiler
+ workarounds</a> have been applied.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">remove_pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id541984"></a><p class="title"><b>Table 1.22. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_pointer</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_pointer</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">*&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_pointer</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">**&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span><span class="special">*</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_pointer</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_pointer</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">*&amp;</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_extent.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remove_reference.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_reference.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_reference.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,141 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>remove_reference</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="remove_pointer.html" title="remove_pointer">
+<link rel="next" href="remove_volatile.html" title="remove_volatile">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_pointer.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remove_volatile.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.remove_reference"></a> remove_reference
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">remove_reference</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> The same type as <code class="computeroutput"><span class="identifier">T</span></code>,
+ but with any reference modifier removed.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 8.3.2.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial specialization of class-templates then this template
+ will compile, but the member <code class="computeroutput"><span class="identifier">type</span></code>
+ will always be the same as type <code class="computeroutput"><span class="identifier">T</span></code>
+ except where <a href="../category/transform.html#boost_typetraits.category.transform.broken_compiler_workarounds_">compiler
+ workarounds</a> have been applied.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">remove_reference</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id542664"></a><p class="title"><b>Table 1.23. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">*</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span><span class="special">*</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_pointer.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="remove_volatile.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_volatile.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/remove_volatile.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,154 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>remove_volatile</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="remove_reference.html" title="remove_reference">
+<link rel="next" href="type_with_alignment.html" title="type_with_alignment">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="type_with_alignment.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.remove_volatile"></a> remove_volatile
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">remove_volatile</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> The same type as <code class="computeroutput"><span class="identifier">T</span></code>,
+ but with any <span class="emphasis"><em>top level</em></span> volatile-qualifier removed.
+ </p>
+<p>
+ <span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.3.
+ </p>
+<p>
+ <span class="bold"><strong>Compiler Compatibility:</strong></span> If the compiler
+ does not support partial specialization of class-templates then this template
+ will compile, but the member <code class="computeroutput"><span class="identifier">type</span></code>
+ will always be the same as type <code class="computeroutput"><span class="identifier">T</span></code>
+ except where <a href="../category/transform.html#boost_typetraits.category.transform.broken_compiler_workarounds_">compiler
+ workarounds</a> have been applied.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">remove_volatile</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<div class="table">
+<a name="id543271"></a><p class="title"><b>Table 1.24. Examples</b></p>
+<div class="table-contents"><table class="table" summary="Examples">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_volatile</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_volatile</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">volatile</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_volatile</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span>
+ <span class="keyword">volatile</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_volatile</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">volatile</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">remove_volatile</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">volatile</span><span class="special">*&gt;::</span><span class="identifier">type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">int</span> <span class="keyword">const</span><span class="special">*</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_reference.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="type_with_alignment.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/reference/type_with_alignment.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/type_with_alignment.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,58 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>type_with_alignment</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../reference.html" title="Alphabetical Reference">
+<link rel="prev" href="remove_volatile.html" title="remove_volatile">
+<link rel="next" href="../credits.html" title="Credits">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_volatile.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../credits.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_typetraits.reference.type_with_alignment"></a> type_with_alignment
+</h3></div></div></div>
+<pre class="programlisting">
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">Align</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">type_with_alignment</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ <span class="bold"><strong>type:</strong></span> a built-in or POD type with an alignment
+ that is a multiple of <code class="computeroutput"><span class="identifier">Align</span></code>.
+ </p>
+<p>
+ <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
+ <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">type_with_alignment</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="remove_volatile.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../credits.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/boost_typetraits/user_defined.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/user_defined.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,77 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>User Defined Specializations</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="prev" href="category/function.html" title="Decomposing Function Types">
+<link rel="next" href="intrinsics.html" title="Support for Compiler Intrinsics">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="category/function.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="intrinsics.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_typetraits.user_defined"></a> User Defined Specializations
+</h2></div></div></div>
+<p>
+ Occationally the end user may need to provide their own specialization for
+ one of the type traits - typically where intrinsic compiler support is required
+ to implement a specific trait fully. These specializations should derive from
+ boost::true_type
+ or boost::false_type
+ as appropriate:
+ </p>
+<pre class="programlisting">
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_pod</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_class</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_union</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">struct</span> <span class="identifier">my_pod</span><span class="special">{};</span>
+<span class="keyword">struct</span> <span class="identifier">my_union</span>
+<span class="special">{</span>
+ <span class="keyword">char</span> <span class="identifier">c</span><span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="keyword">namespace</span> <span class="identifier">boost</span>
+<span class="special">{</span>
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> is_pod<span class="special">&lt;</span><span class="identifier">my_pod</span><span class="special">&gt;</span> <span class="special">:</span> <span class="keyword">public</span> true_type<span class="special">{};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> is_pod<span class="special">&lt;</span><span class="identifier">my_union</span><span class="special">&gt;</span> <span class="special">:</span> <span class="keyword">public</span> true_type<span class="special">{};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> is_union<span class="special">&lt;</span><span class="identifier">my_union</span><span class="special">&gt;</span> <span class="special">:</span> <span class="keyword">public</span> true_type<span class="special">{};</span>
+
+ <span class="keyword">template</span><span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> is_class<span class="special">&lt;</span><span class="identifier">my_union</span><span class="special">&gt;</span> <span class="special">:</span> <span class="keyword">public</span> false_type<span class="special">{};</span>
+<span class="special">}</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><small>Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="category/function.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="intrinsics.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/html/index.html
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/html/index.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,164 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter 1. Boost.TypeTraits</title>
+<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<link rel="start" href="index.html" title="Chapter 1. Boost.TypeTraits">
+<link rel="next" href="boost_typetraits/intro.html" title="Introduction">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_typetraits/intro.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
+<div class="chapter" lang="en">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="boost_typetraits"></a>Chapter 1. Boost.TypeTraits</h2></div>
+<div><p class="copyright">Copyright © 2000, 2006 Adobe Systems Inc, David Abrahams,
+ Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat
+ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert
+ Ramey and Jeremy Siek</p></div>
+<div><div class="legalnotice">
+<a name="id437511"></a><p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at &lt;ulink url="http://www.boost.org class="emphasis"><em>LICENSE_1_0.txt"&gt;
+ http:</em></span>/www.boost.org/LICENSE_1_0.txt &lt;/ulink&gt;)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">
Introduction</span></dt>
+<dt><span class="section"> Background and Tutorial</span></dt>
+<dt><span class="section"> Type Traits by Category</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="boost_typetraits/category/value_traits.html"> Type Traits
+ that Describe the Properties of a Type</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="boost_typetraits/category/value_traits/primary.html"> Categorizing
+ a Type</a></span></dt>
+<dt><span class="section"><a href="boost_typetraits/category/value_traits/properties.html">
+ General Type Properties</a></span></dt>
+<dt><span class="section"><a href="boost_typetraits/category/value_traits/relate.html"> Relationships
+ Between Two Types</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="boost_typetraits/category/transform.html"> Type Traits that
+ Transform One Type to Another</a></span></dt>
+<dt><span class="section"><a href="boost_typetraits/category/alignment.html"> Synthesizing Types
+ with Specific Alignments</a></span></dt>
+<dt><span class="section"><a href="boost_typetraits/category/function.html"> Decomposing Function
+ Types</a></span></dt>
+</dl></dd>
+<dt><span class="section"> User Defined Specializations</span></dt>
+<dt><span class="section"> Support for Compiler Intrinsics</span></dt>
+<dt><span class="section"> MPL Interoperability</span></dt>
+<dt><span class="section"> Examples</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="boost_typetraits/examples/copy.html"> An Optimized Version
+ of std::copy</a></span></dt>
+<dt><span class="section"><a href="boost_typetraits/examples/fill.html"> An Optimised Version
+ of std::fill</a></span></dt>
+<dt><span class="section"><a href="boost_typetraits/examples/destruct.html"> An Example that
+ Omits Destructor Calls For Types with Trivial Destructors</a></span></dt>
+<dt><span class="section"><a href="boost_typetraits/examples/iter.html"> An improved Version
+ of std::iter_swap</a></span></dt>
+<dt><span class="section"><a href="boost_typetraits/examples/to_double.html"> Convert Numeric
+ Types and Enums to double</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Alphabetical Reference</span></dt>
+<dd><dl>
+<dt><span class="section"> add_const</span></dt>
+<dt><span class="section"> add_cv</span></dt>
+<dt><span class="section"> add_pointer</span></dt>
+<dt><span class="section"> add_reference</span></dt>
+<dt><span class="section"> add_volatile</span></dt>
+<dt><span class="section"> aligned_storage</span></dt>
+<dt><span class="section"> alignment_of</span></dt>
+<dt><span class="section"> decay</span></dt>
+<dt><span class="section"> extent</span></dt>
+<dt><span class="section"><a href="boost_typetraits/reference/floating_point_promotion.html">
+ floating_point_promotion</a></span></dt>
+<dt><span class="section"> function_traits</span></dt>
+<dt><span class="section"> has_nothrow_assign</span></dt>
+<dt><span class="section"><a href="boost_typetraits/reference/has_nothrow_constructor.html">
+ has_nothrow_constructor</a></span></dt>
+<dt><span class="section"> has_nothrow_copy</span></dt>
+<dt><span class="section"> has_nothrow_copy_constructor</span></dt>
+<dt><span class="section"> has_nothrow_default_constructor</span></dt>
+<dt><span class="section"> has_trivial_assign</span></dt>
+<dt><span class="section"><a href="boost_typetraits/reference/has_trivial_constructor.html">
+ has_trivial_constructor</a></span></dt>
+<dt><span class="section"> has_trivial_copy</span></dt>
+<dt><span class="section"> has_trivial_copy_constructor</span></dt>
+<dt><span class="section"> has_trivial_default_constructor</span></dt>
+<dt><span class="section"> has_trivial_destructor</span></dt>
+<dt><span class="section"> has_virtual_destructor</span></dt>
+<dt><span class="section"> integral_constant</span></dt>
+<dt><span class="section"> integral_promotion</span></dt>
+<dt><span class="section"> is_abstract</span></dt>
+<dt><span class="section"> is_arithmetic</span></dt>
+<dt><span class="section"> is_array</span></dt>
+<dt><span class="section"> is_base_of</span></dt>
+<dt><span class="section"> is_class</span></dt>
+<dt><span class="section"> is_complex</span></dt>
+<dt><span class="section"> is_compound</span></dt>
+<dt><span class="section"> is_const</span></dt>
+<dt><span class="section"> is_convertible</span></dt>
+<dt><span class="section"> is_empty</span></dt>
+<dt><span class="section"> is_enum</span></dt>
+<dt><span class="section"> is_floating_point</span></dt>
+<dt><span class="section"> is_function</span></dt>
+<dt><span class="section"> is_fundamental</span></dt>
+<dt><span class="section"> is_integral</span></dt>
+<dt><span class="section"><a href="boost_typetraits/reference/is_member_function_pointer.html">
+ is_member_function_pointer</a></span></dt>
+<dt><span class="section"><a href="boost_typetraits/reference/is_member_object_pointer.html">
+ is_member_object_pointer</a></span></dt>
+<dt><span class="section"> is_member_pointer</span></dt>
+<dt><span class="section"> is_object</span></dt>
+<dt><span class="section"> is_pod</span></dt>
+<dt><span class="section"> is_pointer</span></dt>
+<dt><span class="section"> is_polymorphic</span></dt>
+<dt><span class="section"> is_same</span></dt>
+<dt><span class="section"> is_scalar</span></dt>
+<dt><span class="section"> is_signed</span></dt>
+<dt><span class="section"> is_stateless</span></dt>
+<dt><span class="section"> is_reference</span></dt>
+<dt><span class="section"> is_union</span></dt>
+<dt><span class="section"> is_unsigned</span></dt>
+<dt><span class="section"> is_void</span></dt>
+<dt><span class="section"> is_volatile</span></dt>
+<dt><span class="section"> make_signed</span></dt>
+<dt><span class="section"> make_unsigned</span></dt>
+<dt><span class="section"> promote</span></dt>
+<dt><span class="section"> rank</span></dt>
+<dt><span class="section"> remove_all_extents</span></dt>
+<dt><span class="section"> remove_const</span></dt>
+<dt><span class="section"> remove_cv</span></dt>
+<dt><span class="section"> remove_extent</span></dt>
+<dt><span class="section"> remove_pointer</span></dt>
+<dt><span class="section"> remove_reference</span></dt>
+<dt><span class="section"> remove_volatile</span></dt>
+<dt><span class="section"> type_with_alignment</span></dt>
+</dl></dd>
+<dt><span class="section"> Credits</span></dt>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: , at </small></p></td>
+<td align="right"><small></small></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_typetraits/intro.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
+</body>
+</html>

Added: trunk/libs/type_traits/doc/integral_constant.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/integral_constant.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,18 @@
+[section:integral_constant integral_constant]
+ template <class T, T val>
+ struct integral_constant
+ {
+ typedef integral_constant<T, val> type;
+ typedef T value_type;
+ static const T value = val;
+ };
+
+ typedef integral_constant<bool, true> true_type;
+ typedef integral_constant<bool, false> false_type;
+
+Class template `integral_constant` is the common base class for all the value-based
+type traits. The two typedef's `true_type` and `false_type` are provided for
+convenience: most of the value traits are Boolean properties and so will inherit from
+one of these.
+
+[endsect]

Added: trunk/libs/type_traits/doc/integral_promotion.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/integral_promotion.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,29 @@
+[section:integral_promotion integral_promotion]
+
+ template <class T>
+ struct integral_promotion
+ {
+ typedef __below type;
+ };
+
+__type If integral promotion can be applied to an rvalue of type `T`, then
+applies integral promotion to `T` and keeps cv-qualifiers of `T`,
+otherwise leaves `T` unchanged.
+
+__std_ref 4.5 except 4.5/3 (integral bit-field).
+
+__header ` #include <boost/type_traits/integral_promotion.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`integral_promotion<short const>::type`][`int const`]]
+
+[[`integral_promotion<short&>::type`][`short&`]]
+
+[[`integral_promotion<enum std::float_round_style>::type`][`int`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/intrinsics.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/intrinsics.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,54 @@
+[section:intrinsics Support for Compiler Intrinsics]
+
+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 (May 2005) MWCW 9 and Visual C++ 8
+provide 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_union
+* __is_pod
+* __has_trivial_constructor
+* __has_trivial_copy
+* __has_trivial_assign
+* __has_trivial_destructor
+* __has_nothrow_constructor
+* __has_nothrow_copy
+* __has_nothrow_assign
+* __has_virtual_destructor
+
+The following traits classes can't be portably implemented in the C++ language,
+although in practice, the implementations do in fact do the right thing on all
+the compilers we know about:
+
+* __is_empty
+* __is_polymorphic
+
+The following traits classes are dependent on one or more of the above:
+
+* __is_class
+* __is_stateless
+
+The hooks for compiler-intrinsic support are defined in
+[@../../boost/type_traits/intrinsics.hpp boost/type_traits/intrinsics.hpp], adding support for new compilers is simply
+a matter of defining one of more of the following macros:
+
+[table Macros for Compiler Intrinsics
+ [[BOOST_IS_UNION(T)][Should evaluate to true if T is a union type]]
+ [[BOOST_IS_POD(T)][Should evaluate to true if T is a POD type]]
+ [[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_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_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]]
+ [[BOOST_HAS_NOTHROW_ASSIGN(T)][Should evaluate to true if `T t, u; t = u` can not throw]]
+ [[BOOST_HAS_VIRTUAL_DESTRUCTOR(T)][Should evaluate to true T has a virtual destructor]]
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_abstract.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_abstract.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,33 @@
+[section:is_abstract is_abstract]
+ template <class T>
+ struct is_abstract : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) abstract type then inherits from
+__true_type, otherwise inherits from __false_type.
+
+__std_ref 10.3.
+
+__header ` #include <boost/type_traits/is_abstract.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__compat The compiler must support DR337 (as of April 2005: GCC 3.4, VC++ 7.1 (and later),
+ Intel C++ 7 (and later), and Comeau 4.3.2).
+Otherwise behaves the same as __is_polymorphic;
+this is the "safe fallback position" for which polymorphic types are always
+regarded as potentially abstract. The macro BOOST_NO_IS_ABSTRACT is used to
+signify that the implementation is buggy, users should check for this in their
+own code if the "safe fallback" is not suitable for their particular use-case.
+
+__examples
+
+[:Given: `class abc{ virtual ~abc() = 0; };` ]
+
+[:`is_abstract<abc>` inherits from `__true_type`.]
+
+[:`is_abstract<abc>::type` is the type `__true_type`.]
+
+[:`is_abstract<abc const>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_abstract<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_arithmetic.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_arithmetic.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,24 @@
+[section:is_arithmetic is_arithmetic]
+ template <class T>
+ struct is_arithmetic : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) arithmetic type then inherits from
+__true_type, otherwise inherits from __false_type. Arithmetic types include
+integral and floating point types (see also __is_integral and __is_floating_point).
+
+__std_ref 3.9.1p8.
+
+__header ` #include <boost/type_traits/is_arithmetic.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_arithmetic<int>` inherits from `__true_type`.]
+
+[:`is_arithmetic<char>::type` is the type `__true_type`.]
+
+[:`is_arithmetic<double>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_arithmetic<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_array.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_array.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,27 @@
+[section:is_array is_array]
+ template <class T>
+ struct is_array : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) array type then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 3.9.2 and 8.3.4.
+
+__header ` #include <boost/type_traits/is_array.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__compat If the compiler does not support
+partial-specialization of class templates, then this template
+can give the wrong result with function types.
+
+__examples
+
+[:`is_array<int[2]>` inherits from `__true_type`.]
+
+[:`is_array<char[2][3]>::type` is the type `__true_type`.]
+
+[:`is_array<double[]>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_array<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_base_of.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_base_of.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,46 @@
+[section:is_base_of is_base_of]
+ template <class Base, class Derived>
+ struct is_base_of : public __tof {};
+
+__inherit If Base is base class of type Derived or if both types are the same
+then inherits from __true_type,
+otherwise inherits from __false_type.
+
+This template will detect non-public base classes, and ambiguous base classes.
+
+Note that `is_base_of<X,X>` will always inherit from __true_type. [*This is the
+case even if `X` is not a class type]. This is a change in behaviour
+from Boost-1.33 in order to track the Technical Report on C++ Library Extensions.
+
+Types `Base` and `Derived` must not be incomplete types.
+
+__std_ref 10.
+
+__header ` #include <boost/type_traits/is_base_of.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__compat If the compiler does not support partial-specialization of class templates,
+then this template can not be used with function types. There are some older compilers
+which will produce compiler errors if `Base` is a private base class of `Derived`, or if
+`Base` is an ambiguous base of `Derived`. These compilers include Borland C++, older
+versions of Sun Forte C++, Digital Mars C++, and older versions of EDG based compilers.
+
+__examples
+
+[:Given: ` class Base{}; class Derived : public Base{};` ]
+
+[:`is_base_of<Base, Derived>` inherits from `__true_type`.]
+
+[:`is_base_of<Base, Derived>::type` is the type `__true_type`.]
+
+[:`is_base_of<Base, Derived>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_base_of<Base, Derived>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_base_of<Base, Base>::value` is an integral constant
+expression that evaluates to /true/: a class is regarded as it's own base.]
+
+[:`is_base_of<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_class.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_class.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,37 @@
+[section:is_class is_class]
+ template <class T>
+ struct is_class : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) class type then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 3.9.2 and 9.2.
+
+__header ` #include <boost/type_traits/is_class.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__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.
+
+__examples
+
+[:Given: `class MyClass;` then:]
+
+[:`is_class<MyClass>` inherits from `__true_type`.]
+
+[:`is_class<MyClass const>::type` is the type `__true_type`.]
+
+[:`is_class<MyClass>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_class<MyClass&>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_class<MyClass*>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_class<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_complex.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_complex.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,13 @@
+[section:is_complex is_complex]
+
+ template <class T>
+ struct is_complex : public __tof {};
+
+__inherit If `T` is a complex number type then true (of type `std::complex<U>` for
+some type `U`), otherwise false.
+
+__std_ref 26.2.
+
+__header ` #include <boost/type_traits/is_complex.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_compound.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_compound.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,30 @@
+[section:is_compound is_compound]
+ template <class T>
+ struct is_compound : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) compound type then inherits from __true_type,
+otherwise inherits from __false_type. Any type that is not a fundamental type is
+a compound type (see also __is_fundamental).
+
+__std_ref 3.9.2.
+
+__header ` #include <boost/type_traits/is_compound.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_compound<MyClass>` inherits from `__true_type`.]
+
+[:`is_compound<MyEnum>::type` is the type `__true_type`.]
+
+[:`is_compound<int*>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_compound<int&>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_compound<int>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_compound<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_const.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_const.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,35 @@
+[section:is_const is_const]
+
+ template <class T>
+ struct is_const : public __tof {};
+
+__inherit If T is a (top level) const-qualified type then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 3.9.3.
+
+__header ` #include <boost/type_traits/is_const.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_const<int const>` inherits from `__true_type`.]
+
+[:`is_const<int const volatile>::type` is the type `__true_type`.]
+
+[:`is_const<int* const>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_const<int const*>::value` is an integral constant
+expression that evaluates to /false/: the const-qualifier is not
+at the top level in this case.]
+
+[:`is_const<int const&>::value` is an integral constant
+expression that evaluates to /false/: the const-qualifier is not
+at the top level in this case.]
+
+[:`is_const<int>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_const<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_convertible.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_convertible.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,58 @@
+[section:is_convertible is_convertible]
+ template <class From, class To>
+ struct is_convertible : public __tof {};
+
+__inherit If an imaginary lvalue of type `From` is convertible to type `To` then
+inherits from __true_type, otherwise inherits from __false_type.
+
+Type From must not be an incomplete type.
+
+Type To must not be an incomplete, or function type.
+
+No types are considered to be convertible to array types or abstract-class types.
+
+This template can not detect whether a converting-constructor is `public` or not: if
+type `To` has a `private` converting constructor from type `From` then instantiating
+`is_convertible<From, To>` will produce a compiler error. For this reason `is_convertible`
+can not be used to determine whether a type has a `public` copy-constructor or not.
+
+This template will also produce compiler errors if the conversion is ambiguous,
+for example:
+
+ struct A {};
+ struct B : A {};
+ struct C : A {};
+ struct D : B, C {};
+ // This produces a compiler error, the conversion is ambiguous:
+ bool const y = boost::is_convertible<D*,A*>::value;
+
+__std_ref 4 and 8.5.
+
+__compat This template is currently broken with Borland C++ Builder 5 (and earlier),
+for constructor-based conversions, and for the Metrowerks 7 (and earlier)
+compiler in all cases. If the compiler does not support `__is_abstract`, then the
+template parameter `To` must not be an abstract type.
+
+__header ` #include <boost/type_traits/is_convertible.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_convertible<int, double>` inherits from `__true_type`.]
+
+[:`is_convertible<const int, double>::type` is the type `__true_type`.]
+
+[:`is_convertible<int* const, int*>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_convertible<int const*, int*>::value` is an integral constant
+expression that evaluates to /false/: the conversion would require a `const_cast`.]
+
+[:`is_convertible<int const&, long>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_convertible<int>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_convertible<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_empty.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_empty.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,37 @@
+[section:is_empty is_empty]
+ template <class T>
+ struct is_empty : public __tof {};
+
+__inherit If T is an empty class type then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 10p5.
+
+__header ` #include <boost/type_traits/is_empty.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__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.
+
+Can not be used with incomplete types.
+
+Can not be used with union types, until is_union can be made to work.
+
+If the compiler does not support partial-specialization of class templates,
+then this template can not be used with abstract types.
+
+__examples
+
+[:Given: `struct empty_class {};` ]
+
+[:`is_empty<empty_class>` inherits from `__true_type`.]
+
+[:`is_empty<empty_class const>::type` is the type `__true_type`.]
+
+[:`is_empty<empty_class>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_empty<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_enum.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_enum.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,36 @@
+[section:is_enum is_enum]
+ template <class T>
+ struct is_enum : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) enum type then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 3.9.2 and 7.2.
+
+__header ` #include <boost/type_traits/is_enum.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__compat Requires a correctly functioning __is_convertible template;
+ this means that is_enum is currently broken under Borland C++ Builder 5,
+ and for the Metrowerks compiler prior to version 8, other compilers
+ should handle this template just fine.
+
+__examples
+
+[:Given: `enum my_enum { one, two };` ]
+
+[:`is_enum<my_enum>` inherits from `__true_type`.]
+
+[:`is_enum<my_enum const>::type` is the type `__true_type`.]
+
+[:`is_enum<my_enum>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_enum<my_enum&>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_enum<my_enum*>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_enum<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_floating_point.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_floating_point.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,23 @@
+[section:is_floating_point is_floating_point]
+ template <class T>
+ struct is_floating_point : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) floating point type then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 3.9.1p8.
+
+__header ` #include <boost/type_traits/is_floating_point.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_floating_point<float>` inherits from `__true_type`.]
+
+[:`is_floating_point<double>::type` is the type `__true_type`.]
+
+[:`is_floating_point<long double>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_floating_point<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_function.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_function.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,66 @@
+[section:is_function is_function]
+
+ template <class T>
+ struct is_function : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) function type then inherits from __true_type,
+otherwise inherits from __false_type. Note that this template does not detect /pointers
+to functions/, or /references to functions/, these are detected by __is_pointer and
+__is_reference respectively:
+
+ typedef int f1(); // f1 is of function type.
+ typedef int (f2*)(); // f2 is a pointer to a function.
+ typedef int (f3&)(); // f3 is a reference to a function.
+
+__std_ref 3.9.2p1 and 8.3.5.
+
+__header ` #include <boost/type_traits/is_function.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_function<int (void)>` inherits from `__true_type`.]
+
+[:`is_function<long (double, int)>::type` is the type `__true_type`.]
+
+[:`is_function<long (double, int)>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_function<long (*)(double, int)>::value` is an integral constant
+expression that evaluates to /false/: the argument in this case is a pointer type,
+not a function type.]
+
+[:`is_function<long (&)(double, int)>::value` is an integral constant
+expression that evaluates to /false/: the argument in this case is a
+reference to a function, not a function type.]
+
+[:`is_function<long (MyClass::*)(double, int)>::value` is an integral constant
+expression that evaluates to /false/: the argument in this case is a pointer
+to a member function.]
+
+[:`is_function<T>::value_type` is the type `bool`.]
+
+[tip Don't confuse function-types with pointers to functions:
+
+`typedef int f(double);`
+
+defines a function type,
+
+`f foo;`
+
+declares a prototype for a function of type `f`,
+
+`f* pf = foo;`
+
+`f& fr = foo;`
+
+declares a pointer and a reference to the function `foo`.
+
+If you want to detect whether some type is a pointer-to-function then use:
+
+`__is_function<__remove_pointer<T>::type>::value && __is_pointer<T>::value`
+
+or for pointers to member functions you can just use
+__is_member_function_pointer directly.
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_fundamental.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_fundamental.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,24 @@
+[section:is_fundamental is_fundamental]
+ template <class T>
+ struct is_fundamental : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) fundamental type then inherits from __true_type,
+otherwise inherits from __false_type. Fundamental types include integral, floating
+point and void types (see also __is_integral, __is_floating_point and __is_void)
+
+__std_ref 3.9.1.
+
+__header ` #include <boost/type_traits/is_fundamental.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_fundamental<int)>` inherits from `__true_type`.]
+
+[:`is_fundamental<double const>::type` is the type `__true_type`.]
+
+[:`is_fundamental<void>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_fundamental<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_integral.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_integral.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,23 @@
+[section:is_integral is_integral]
+ template <class T>
+ struct is_integral : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) integral type then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 3.9.1p7.
+
+__header ` #include <boost/type_traits/is_integral.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_integral<int>` inherits from `__true_type`.]
+
+[:`is_integral<const char>::type` is the type `__true_type`.]
+
+[:`is_integral<long>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_integral<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_member_function_pointer.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_member_function_pointer.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,29 @@
+[section:is_member_function_pointer is_member_function_pointer]
+ template <class T>
+ struct is_member_function_pointer : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) pointer to a member function
+then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 3.9.2 and 8.3.3.
+
+__header ` #include <boost/type_traits/is_member_function_pointer.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_member_function_pointer<int (MyClass::*)(void)>` inherits from `__true_type`.]
+
+[:`is_member_function_pointer<int (MyClass::*)(char)>::type` is the type `__true_type`.]
+
+[:`is_member_function_pointer<int (MyClass::*)(void)const>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_member_function_pointer<int (MyClass::*)>::value` is an integral constant
+expression that evaluates to /false/: the argument in this case is a pointer to
+a data member and not a member function, see __is_member_object_pointer
+and __is_member_pointer]
+
+[:`is_member_function_pointer<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_member_object_pointer.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_member_object_pointer.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,29 @@
+[section:is_member_object_pointer is_member_object_pointer]
+ template <class T>
+ struct is_member_object_pointer : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) pointer to a member object (a data member)
+then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 3.9.2 and 8.3.3.
+
+__header ` #include <boost/type_traits/is_member_object_pointer.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_member_object_pointer<int (MyClass::*)>` inherits from `__true_type`.]
+
+[:`is_member_object_pointer<double (MyClass::*)>::type` is the type `__true_type`.]
+
+[:`is_member_object_pointer<const int (MyClass::*)>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_member_object_pointer<int (MyClass::*)(void)>::value` is an integral constant
+expression that evaluates to /false/: the argument in this case is a pointer to
+a member function and not a member object, see __is_member_function_pointer
+and __is_member_pointer]
+
+[:`is_member_object_pointer<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_member_pointer.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_member_pointer.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,25 @@
+[section:is_member_pointer is_member_pointer]
+ template <class T>
+ struct is_member_pointer : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) pointer to a member (either a function
+or a data member)
+then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 3.9.2 and 8.3.3.
+
+__header ` #include <boost/type_traits/is_member_pointer.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_member_pointer<int (MyClass::*)>` inherits from `__true_type`.]
+
+[:`is_member_pointer<int (MyClass::*)(char)>::type` is the type `__true_type`.]
+
+[:`is_member_pointer<int (MyClass::*)(void)const>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_member_pointer<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_object.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_object.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,37 @@
+[section:is_object is_object]
+ template <class T>
+ struct is_object : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) object type
+then inherits from __true_type,
+otherwise inherits from __false_type. All types are object types except
+references, void, and function types.
+
+__std_ref 3.9p9.
+
+__header ` #include <boost/type_traits/is_object.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_object<int>` inherits from `__true_type`.]
+
+[:`is_object<int*>::type` is the type `__true_type`.]
+
+[:`is_object<int (*)(void)>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_object<int (MyClass::*)(void)const>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_object<int &>::value` is an integral constant
+expression that evaluates to /false/: reference types are not objects]
+
+[:`is_object<int (double)>::value` is an integral constant
+expression that evaluates to /false/: function types are not objects]
+
+[:`is_object<const void>::value` is an integral constant
+expression that evaluates to /false/: void is not an object type]
+
+[:`is_object<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_pod.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_pod.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,43 @@
+[section:is_pod is_pod]
+ template <class T>
+ struct is_pod : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) POD type then inherits from __true_type,
+otherwise inherits from __false_type.
+
+POD stands for "Plain old data".
+Arithmetic types, and enumeration types,
+a pointers and pointer to members are all PODs. Classes and unions can also
+be POD's if they have no non-static data members that are of reference or
+non-POD type, no user defined constructors, no user defined assignment
+operators, no private or protected non-static data members,
+no virtual functions and no base classes. Finally, a cv-qualified POD is
+still a POD, as is an array of PODs.
+
+__std_ref 3.9p10 and 9p4 (Note that POD's are also aggregates, see 8.5.1).
+
+__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, 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.
+
+__header ` #include <boost/type_traits/is_pod.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_pod<int>` inherits from `__true_type`.]
+
+[:`is_pod<char*>::type` is the type `__true_type`.]
+
+[:`is_pod<int (*)(long)>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_pod<MyClass>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_pod<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_pointer.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_pointer.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,37 @@
+[section:is_pointer is_pointer]
+ template <class T>
+ struct is_pointer : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) pointer type (includes function pointers,
+but excludes pointers to members) then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 3.9.2p2 and 8.3.1.
+
+__header ` #include <boost/type_traits/is_pointer.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_pointer<int*>` inherits from `__true_type`.]
+
+[:`is_pointer<char* const>::type` is the type `__true_type`.]
+
+[:`is_pointer<int (*)(long)>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_pointer<int (MyClass::*)(long)>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_pointer<int (MyClass::*)>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_pointer<T>::value_type` is the type `bool`.]
+
+[important `is_pointer` detects "real" pointer types only, and /not/ smart pointers.
+Users should not specialise `is_pointer` for smart pointer types, as doing so may cause
+Boost (and other third party) code to fail to function correctly.
+Users wanting a trait to detect smart pointers should create their own.
+However, note that there is no way in general to auto-magically detect smart pointer types,
+so such a trait would have to be partially specialised for each supported smart pointer type.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_polymorphic.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_polymorphic.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,29 @@
+[section:is_polymorphic is_polymorphic]
+ template <class T>
+ struct is_polymorphic : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) polymorphic type
+then inherits from __true_type,
+otherwise inherits from __false_type. Type `T` must be a complete type.
+
+__std_ref 10.3.
+
+__compat The implementation requires some knowledge of the compilers ABI,
+it does actually seem to work with the majority of compilers though.
+
+__header ` #include <boost/type_traits/is_polymorphic.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[: Given: `class poly{ virtual ~poly(); };` ]
+
+[:`is_polymorphic<poly>` inherits from `__true_type`.]
+
+[:`is_polymorphic<poly const>::type` is the type `__true_type`.]
+
+[:`is_polymorphic<poly>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_polymorphic<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_reference.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_reference.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,29 @@
+[section:is_reference is_reference]
+ template <class T>
+ struct is_reference : public __tof {};
+
+__inherit If T is a reference pointer type then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 3.9.2 and 8.3.2.
+
+__compat If the compiler does not
+support partial-specialization of class templates,
+then this template may report the wrong result for function types,
+and for types that are both const and volatile qualified.
+
+__header ` #include <boost/type_traits/is_reference.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_reference<int&>` inherits from `__true_type`.]
+
+[:`is_reference<int const&>::type` is the type `__true_type`.]
+
+[:`is_reference<int (&)(long)>::value` is an integral constant
+expression that evaluates to /true/ (the argument in this case is
+a reference to a function).]
+
+[:`is_reference<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_same.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_same.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,30 @@
+[section:is_same is_same]
+ template <class T, class U>
+ struct is_same : public __tof {};
+
+__inherit If T and U are the same types then inherits from
+__true_type, otherwise inherits from __false_type.
+
+__header ` #include <boost/type_traits/is_same.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__compat If the compiler does not support partial-specialization of class templates,
+then this template can not be used with abstract, incomplete or function types.
+
+__examples
+
+[:`is_same<int, int>` inherits from `__true_type`.]
+
+[:`is_same<int, int>::type` is the type `__true_type`.]
+
+[:`is_same<int, int>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_same<int const, int>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_same<int&, int>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_same<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_scalar.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_scalar.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,36 @@
+[section:is_scalar is_scalar]
+ template <class T>
+ struct is_scalar : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) scalar type then inherits from
+__true_type, otherwise inherits from __false_type. Scalar types include
+integral, floating point, enumeration, pointer, and pointer-to-member types.
+
+__std_ref 3.9p10.
+
+__header ` #include <boost/type_traits/is_scalar.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__compat If the compiler does not support partial-specialization of class templates,
+then this template can not be used with function types.
+
+__examples
+
+[:`is_scalar<int*>` inherits from `__true_type`.]
+
+[:`is_scalar<int>::type` is the type `__true_type`.]
+
+[:`is_scalar<double>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_scalar<int (*)(long)>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_scalar<int (MyClass::*)(long)>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_scalar<int (MyClass::*)>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_scalar<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_signed.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_signed.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,34 @@
+[section:is_signed is_signed]
+
+ template <class T>
+ struct is_signed : public __tof {};
+
+__inherit If T is an signed integer type or an enumerated type with an
+underlying signed integer type, then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 3.9.1, 7.2.
+
+__header ` #include <boost/type_traits/is_signed.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_signed<int>` inherits from `__true_type`.]
+
+[:`is_signed<int const volatile>::type` is the type `__true_type`.]
+
+[:`is_signed<unsigned int>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_signed<myclass>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_signed<char>::value` is an integral constant
+expression whose value depends upon the signedness of type `char`.]
+
+[:`is_signed<long long>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_signed<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_stateless.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_stateless.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,32 @@
+[section:is_stateless is_stateless]
+ template <class T>
+ struct is_stateless : public __tof {};
+
+__inherit Ff T is a stateless type then inherits from __true_type, otherwise
+from __false_type.
+
+Type T must be a complete type.
+
+A stateless type is a type that has no storage and whose constructors and
+destructors are trivial. That means that `is_stateless` only inherits from
+__true_type if the following expression is `true`:
+
+ ::boost::has_trivial_constructor<T>::value
+ && ::boost::has_trivial_copy<T>::value
+ && ::boost::has_trivial_destructor<T>::value
+ && ::boost::is_class<T>::value
+ && ::boost::is_empty<T>::value
+
+__std_ref 3.9p10.
+
+__header ` #include <boost/type_traits/is_stateless.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__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, 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.
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_union.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_union.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,35 @@
+[section:is_union is_union]
+ template <class T>
+ struct is_union : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) union type then inherits from __true_type,
+otherwise inherits from __false_type. Currently requires some kind of compiler
+support, otherwise unions are identified as classes.
+
+__std_ref 3.9.2 and 9.5.
+
+__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.
+
+__header ` #include <boost/type_traits/is_union.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_union<void>` inherits from `__true_type`.]
+
+[:`is_union<const void>::type` is the type `__true_type`.]
+
+[:`is_union<void>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_union<void*>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_union<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_unsigned.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_unsigned.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,34 @@
+[section:is_unsigned is_unsigned]
+
+ template <class T>
+ struct is_unsigned : public __tof {};
+
+__inherit If T is an unsigned integer type or an enumerated type with an
+underlying unsigned integer type, then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 3.9.1, 7.2.
+
+__header ` #include <boost/type_traits/is_unsigned.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_unsigned<unsigned int>` inherits from `__true_type`.]
+
+[:`is_unsigned<unsigned int const volatile>::type` is the type `__true_type`.]
+
+[:`is_unsigned<int>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_unsigned<myclass>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_unsigned<char>::value` is an integral constant
+expression whose value depends upon the signedness of type `char`.]
+
+[:`is_unsigned<unsigned long long>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_unsigned<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_void.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_void.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,26 @@
+[section:is_void is_void]
+ template <class T>
+ struct is_void : public __tof {};
+
+__inherit If T is a (possibly cv-qualified) void type then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 3.9.1p9.
+
+__header ` #include <boost/type_traits/is_void.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_void<void>` inherits from `__true_type`.]
+
+[:`is_void<const void>::type` is the type `__true_type`.]
+
+[:`is_void<void>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_void<void*>::value` is an integral constant
+expression that evaluates to /false/.]
+
+[:`is_void<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/is_volatile.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/is_volatile.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,27 @@
+[section:is_volatile is_volatile]
+ template <class T>
+ struct is_volatile : public __tof {};
+
+__inherit If T is a (top level) volatile-qualified type then inherits from __true_type,
+otherwise inherits from __false_type.
+
+__std_ref 3.9.3.
+
+__header ` #include <boost/type_traits/is_volatile.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`is_volatile<volatile int>` inherits from `__true_type`.]
+
+[:`is_volatile<const volatile int>::type` is the type `__true_type`.]
+
+[:`is_volatile<int* volatile>::value` is an integral constant
+expression that evaluates to /true/.]
+
+[:`is_volatile<int volatile*>::value` is an integral constant
+expression that evaluates to /false/: the volatile qualifier is not
+at the top level in this case.]
+
+[:`is_volatile<T>::value_type` is the type `bool`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/make_signed.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/make_signed.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,39 @@
+[section:make_signed make_signed]
+
+ template <class T>
+ struct make_signed
+ {
+ typedef __below type;
+ };
+
+__type If T is a signed integer type then the same type as T, if T is an
+unsigned integer type then the corresponding signed type.
+Otherwise if T is an enumerated or
+character type (char or wchar_t) then a signed integer type with the same
+width as T.
+
+If T has any cv-qualifiers then these are also present on the result type.
+
+[*Requires:] T must be an integer or enumerated type, and must not be the type
+bool.
+
+__std_ref 3.9.1.
+
+__header ` #include <boost/type_traits/make_signed.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`make_signed<int>::type`][`int`]]
+
+[[`make_signed<unsigned int const>::type`] [`int const`]]
+
+[[`make_signed<const unsigned long long>::type`] [`const long long`]]
+
+[[`make_signed<my_enum>::type`] [A signed integer type with the same width as the enum.]]
+[[`make_signed<wchar_t>::type`] [A signed integer type with the same width as wchar_t.]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/make_unsigned.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/make_unsigned.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,39 @@
+[section:make_unsigned make_unsigned]
+
+ template <class T>
+ struct make_unsigned
+ {
+ typedef __below type;
+ };
+
+__type If T is a unsigned integer type then the same type as T, if T is an
+signed integer type then the corresponding unsigned type.
+Otherwise if T is an enumerated or
+character type (char or wchar_t) then an unsigned integer type with the same
+width as T.
+
+If T has any cv-qualifiers then these are also present on the result type.
+
+[*Requires:] T must be an integer or enumerated type, and must not be the type
+bool.
+
+__std_ref 3.9.1.
+
+__header ` #include <boost/type_traits/make_unsigned.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`make_signed<int>::type`][`unsigned int`]]
+
+[[`make_signed<unsigned int const>::type`] [`unsigned int const`]]
+
+[[`make_signed<const unsigned long long>::type`] [`const unsigned long long`]]
+
+[[`make_signed<my_enum>::type`] [An unsigned integer type with the same width as the enum.]]
+[[`make_signed<wchar_t>::type`] [An unsigned integer type with the same width as wchar_t.]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/mpl.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/mpl.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,12 @@
+[section:mpl MPL Interoperability]
+
+All the value based traits in this library conform to MPL's requirements
+for an [@../../libs/mpl/doc/refmanual/integral-constant.html Integral Constant type]: that includes a number of rather intrusive
+workarounds for broken compilers.
+
+Purely as an implementation detail, this
+means that `__true_type` inherits from [@../../libs/mpl/doc/refmanual/bool.html `boost::mpl::true_`], `__false_type` inherits
+from [@../../libs/mpl/doc/refmanual/bool.html `boost::mpl::false_`], and `__integral_constant<T, v>` inherits from
+[@../../libs/mpl/doc/refmanual/integral-c.html `boost::mpl::integral_c<T,v>`] (provided `T` is not `bool`)
+
+[endsect]

Added: trunk/libs/type_traits/doc/promote.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/promote.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,30 @@
+[section:promote promote]
+
+ template <class T>
+ struct promote
+ {
+ typedef __below type;
+ };
+
+__type If integral or floating point promotion can be applied to an rvalue
+of type `T`, then applies integral and floating point promotions to `T` and
+keeps cv-qualifiers of `T`, otherwise leaves `T` unchanged. See also
+__integral_promotion and __floating_point_promotion.
+
+__std_ref 4.5 except 4.5/3 (integral bit-field) and 4.6.
+
+__header ` #include <boost/type_traits/promote.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`promote<short volatile>::type`][`int volatile`]]
+
+[[`promote<float const>::type`][`double const`]]
+
+[[`promote<short&>::type`][`short&`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/rank.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/rank.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,29 @@
+[section:rank rank]
+ template <class T>
+ struct rank : public __integral_constant<std::size_t, RANK(T)> {};
+
+__inherit Class template rank inherits from `__integral_constant<std::size_t, RANK(T)>`,
+where `RANK(T)` is the number of array dimensions in type `T`.
+
+If `T` is not an array type, then `RANK(T)` is zero.
+
+__header ` #include <boost/type_traits/rank.hpp>` or ` #include <boost/type_traits.hpp>`
+
+__examples
+
+[:`rank<int[]>` inherits from `__integral_constant<std::size_t, 1>`.]
+
+[:`rank<double[2][3][4]>::type` is the type `__integral_constant<std::size_t, 3>`.]
+
+[:`rank<int[1]>::value` is an integral constant
+expression that evaluates to /1/.]
+
+[:`rank<int[][2]>::value` is an integral constant
+expression that evaluates to /2/.]
+
+[:`rank<int*>::value` is an integral constant
+expression that evaluates to /0/.]
+
+[:`rank<T>::value_type` is the type `std::size_t`.]
+
+[endsect]

Added: trunk/libs/type_traits/doc/remove_all_extents.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/remove_all_extents.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,36 @@
+[section:remove_all_extents remove_all_extents]
+
+ template <class T>
+ struct remove_all_extents
+ {
+ typedef __below type;
+ };
+
+__type If `T` is an array type, then removes all of the array bounds on `T`, otherwise
+leaves `T` unchanged.
+
+__std_ref 8.3.4.
+
+__compat If the compiler does not support partial specialization of class-templates
+then this template will compile, but the member `type` will always be the same as
+type `T` except where __transform_workaround have been applied.
+
+__header ` #include <boost/type_traits/remove_all_extents.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`remove_all_extents<int>::type`][`int`]]
+
+[[`remove_all_extents<int const[2]>::type`] [`int const`]]
+
+[[`remove_all_extents<int[][2]>::type`] [`int`]]
+
+[[`remove_all_extents<int[2][3][4]>::type`] [`int`]]
+
+[[`remove_all_extents<int const*>::type`] [`int const*`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/remove_const.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/remove_const.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,35 @@
+[section:remove_const remove_const]
+
+ template <class T>
+ struct remove_const
+ {
+ typedef __below type;
+ };
+
+__type The same type as `T`, but with any /top level/ const-qualifier removed.
+
+__std_ref 3.9.3.
+
+__compat If the compiler does not support partial specialization of class-templates
+then this template will compile, but the member `type` will always be the same as
+type `T` except where __transform_workaround have been applied.
+
+__header ` #include <boost/type_traits/remove_const.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`remove_const<int>::type`][`int`]]
+
+[[`remove_const<int const>::type`] [`int`]]
+
+[[`remove_const<int const volatile>::type`] [`int volatile`]]
+
+[[`remove_const<int const&>::type`] [`int const&`]]
+
+[[`remove_const<int const*>::type`] [`int const*`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/remove_cv.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/remove_cv.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,35 @@
+[section:remove_cv remove_cv]
+
+ template <class T>
+ struct remove_cv
+ {
+ typedef __below type;
+ };
+
+__type The same type as `T`, but with any /top level/ cv-qualifiers removed.
+
+__std_ref 3.9.3.
+
+__compat If the compiler does not support partial specialization of class-templates
+then this template will compile, but the member `type` will always be the same as
+type `T` except where __transform_workaround have been applied.
+
+__header ` #include <boost/type_traits/remove_cv.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`remove_cv<int>::type`][`int`]]
+
+[[`remove_cv<int const>::type`] [`int`]]
+
+[[`remove_cv<int const volatile>::type`] [`int`]]
+
+[[`remove_cv<int const&>::type`] [`int const&`]]
+
+[[`remove_cv<int const*>::type`] [`int const*`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/remove_extent.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/remove_extent.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,36 @@
+[section:remove_extent remove_extent]
+
+ template <class T>
+ struct remove_extent
+ {
+ typedef __below type;
+ };
+
+__type If `T` is an array type, then removes the topmost array bound,
+otherwise leaves `T` unchanged.
+
+__std_ref 8.3.4.
+
+__compat If the compiler does not support partial specialization of class-templates
+then this template will compile, but the member `type` will always be the same as
+type `T` except where __transform_workaround have been applied.
+
+__header ` #include <boost/type_traits/remove_extent.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`remove_extent<int>::type`][`int`]]
+
+[[`remove_extent<int const[2]>::type`] [`int const`]]
+
+[[`remove_extent<int[2][4]>::type`] [`int[4]`]]
+
+[[`remove_extent<int[][2]>::type`] [`int[2]`]]
+
+[[`remove_extent<int const*>::type`] [`int const*`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/remove_pointer.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/remove_pointer.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,35 @@
+[section:remove_pointer remove_pointer]
+
+ template <class T>
+ struct remove_pointer
+ {
+ typedef __below type;
+ };
+
+__type The same type as `T`, but with any pointer modifier removed.
+
+__std_ref 8.3.1.
+
+__compat If the compiler does not support partial specialization of class-templates
+then this template will compile, but the member `type` will always be the same as
+type `T` except where __transform_workaround have been applied.
+
+__header ` #include <boost/type_traits/remove_pointer.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`remove_pointer<int>::type`][`int`]]
+
+[[`remove_pointer<int const*>::type`] [`int const`]]
+
+[[`remove_pointer<int const**>::type`] [`int const*`]]
+
+[[`remove_pointer<int&>::type`] [`int&`]]
+
+[[`remove_pointer<int*&>::type`] [`int*&`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/remove_reference.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/remove_reference.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,33 @@
+[section:remove_reference remove_reference]
+
+ template <class T>
+ struct remove_reference
+ {
+ typedef __below type;
+ };
+
+__type The same type as `T`, but with any reference modifier removed.
+
+__std_ref 8.3.2.
+
+__compat If the compiler does not support partial specialization of class-templates
+then this template will compile, but the member `type` will always be the same as
+type `T` except where __transform_workaround have been applied.
+
+__header ` #include <boost/type_traits/remove_reference.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`remove_reference<int>::type`][`int`]]
+
+[[`remove_reference<int const&>::type`] [`int const`]]
+
+[[`remove_reference<int*>::type`] [`int*`]]
+
+[[`remove_reference<int*&>::type`] [`int*`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/remove_volatile.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/remove_volatile.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,35 @@
+[section:remove_volatile remove_volatile]
+
+ template <class T>
+ struct remove_volatile
+ {
+ typedef __below type;
+ };
+
+__type The same type as `T`, but with any /top level/ volatile-qualifier removed.
+
+__std_ref 3.9.3.
+
+__compat If the compiler does not support partial specialization of class-templates
+then this template will compile, but the member `type` will always be the same as
+type `T` except where __transform_workaround have been applied.
+
+__header ` #include <boost/type_traits/remove_volatile.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[table Examples
+
+[ [Expression] [Result Type]]
+
+[[`remove_volatile<int>::type`][`int`]]
+
+[[`remove_volatile<int volatile>::type`] [`int`]]
+
+[[`remove_volatile<int const volatile>::type`] [`int const`]]
+
+[[`remove_volatile<int volatile&>::type`] [`int const&`]]
+
+[[`remove_volatile<int volatile*>::type`] [`int const*`]]
+
+]
+
+[endsect]

Added: trunk/libs/type_traits/doc/transform_traits.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/transform_traits.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,110 @@
+[section:transform Type Traits that Transform One Type to Another]
+
+The following templates transform one type to another,
+based upon some well-defined rule.
+Each template has a single member called `type` that is the
+result of applying the transformation to the template argument `T`.
+
+[*Synopsis:]
+
+ template <class T>
+ struct __add_const;
+
+ template <class T>
+ struct __add_cv;
+
+ template <class T>
+ struct __add_pointer;
+
+ template <class T>
+ struct __add_reference;
+
+ template <class T>
+ struct __add_volatile;
+
+ template <class T>
+ struct __decay;
+
+ template <class T>
+ struct __floating_point_promotion;
+
+ template <class T>
+ struct __integral_promotion;
+
+ template <class T>
+ struct __make_signed;
+
+ template <class T>
+ struct __make_unsigned;
+
+ template <class T>
+ struct __promote;
+
+ template <class T>
+ struct __remove_all_extents;
+
+ template <class T>
+ struct __remove_const;
+
+ template <class T>
+ struct __remove_cv;
+
+ template <class T>
+ struct __remove_extent;
+
+ template <class T>
+ struct __remove_pointer;
+
+ template <class T>
+ struct __remove_reference;
+
+ template <class T>
+ struct __remove_volatile;
+
+[h4 Broken Compiler Workarounds:]
+
+For all of these templates support for partial specialization of class templates is
+required to correctly implement the transformation.
+On the other hand, practice shows that many of the templates from this
+category are very useful, and often essential for implementing some
+generic libraries. Lack of these templates is often one of the major
+limiting factors in porting those libraries to compilers that do not yet
+support this language feature. As some of these compilers are going to be
+around for a while, and at least one of them is very wide-spread,
+it was decided that the library should provide workarounds where possible.
+
+The basic idea behind the workaround is to manually define full
+specializations of all type transformation templates for all fundamental types,
+and all their 1st and 2nd rank cv-[un]qualified derivative pointer types, and to
+provide a user-level macro that will define all the explicit specializations needed
+for any user-defined type T.
+
+The first part guarantees the successful compilation of something like this:
+
+ BOOST_STATIC_ASSERT((is_same<char, remove_reference<char&>::type>::value));
+ BOOST_STATIC_ASSERT((is_same<char const, remove_reference<char const&>::type>::value));
+ BOOST_STATIC_ASSERT((is_same<char volatile, remove_reference<char volatile&>::type>::value));
+ BOOST_STATIC_ASSERT((is_same<char const volatile, remove_reference<char const volatile&>::type>::value));
+ BOOST_STATIC_ASSERT((is_same<char*, remove_reference<char*&>::type>::value));
+ BOOST_STATIC_ASSERT((is_same<char const*, remove_reference<char const*&>::type>::value));
+ ...
+ BOOST_STATIC_ASSERT((is_same<char const volatile* const volatile* const volatile, remove_reference<char const volatile* const volatile* const volatile&>::type>::value));
+
+and the second part provides the library's users with a mechanism to make the
+above code work not only for `char`, `int` or other built-in type,
+but for their own types as well:
+
+ namespace myspace{
+ struct MyClass {};
+ }
+ // declare this at global scope:
+ BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(myspace::MyClass)
+ // transformations on myspace::MyClass now work:
+ BOOST_STATIC_ASSERT((is_same<myspace::MyClass, remove_reference<myspace::MyClass&>::type>::value));
+ BOOST_STATIC_ASSERT((is_same<myspace::MyClass, remove_const<myspace::MyClass const>::type>::value));
+ // etc.
+
+Note that the macro BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION evaluates
+to nothing on those compilers that *do* support partial specialization.
+
+[endsect]

Modified: trunk/libs/type_traits/doc/type_traits.qbk
==============================================================================
--- trunk/libs/type_traits/doc/type_traits.qbk (original)
+++ trunk/libs/type_traits/doc/type_traits.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -1,4 +1,5 @@
 [library Boost.TypeTraits
+ [quickbook 1.4]
     [copyright 2000 2006 Adobe Systems Inc, David Abrahams, Steve Cleary,
     Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat Marcus,
     Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen,
@@ -14,89 +15,101 @@
     [authors [authors, various]]
     [category template]
     [category generic]
- [last-revision $Date$]
+ [last-revision $LastChangedDate$]
 ]
 
+
 [def __boost_root ../../../../]
-[def __tof '''<replaceable><link linkend="boost_typetraits.integral_constant">true_type</link>-or-<link linkend="boost_typetraits.integral_constant">false_type</link></replaceable>''']
+[def __tof '''<replaceable><link linkend="boost_typetraits.reference.integral_constant">true_type</link>-or-<link linkend="boost_typetraits.reference.integral_constant">false_type</link></replaceable>''']
 [def __below '''<replaceable>see-below</replaceable>''']
-[def __true_type [link boost_typetraits.integral_constant true_type]]
-[def __false_type [link boost_typetraits.integral_constant false_type]]
-[def __integral_constant [link boost_typetraits.integral_constant integral_constant]]
+[def __true_type [link boost_typetraits.reference.integral_constant true_type]]
+[def __false_type [link boost_typetraits.reference.integral_constant false_type]]
+[def __integral_constant [link boost_typetraits.reference.integral_constant integral_constant]]
 [def __inherit [*Inherits:]]
 [def __std_ref [*C++ Standard Reference:]]
 [def __header [*Header:]]
 [def __compat [*Compiler Compatibility:]]
 [def __examples [*Examples:]]
 [def __type [*type:]]
-[def __transform_workaround [link transform.broken_compiler_workarounds_ compiler workarounds]]
+[def __transform_workaround [link boost_typetraits.category.transform.broken_compiler_workarounds_ compiler workarounds]]
 [def __intrinsics [link boost_typetraits.intrinsics intrinsics]]
 
-[def __is_void [link boost_typetraits.is_void is_void]]
-[def __is_integral [link boost_typetraits.is_integral is_integral]]
-[def __is_floating_point [link boost_typetraits.is_floating_point is_floating_point]]
-[def __is_pointer [link boost_typetraits.is_pointer is_pointer]]
-[def __is_reference [link boost_typetraits.is_reference is_reference]]
-[def __is_member_pointer [link boost_typetraits.is_member_pointer is_member_pointer]]
-[def __is_array [link boost_typetraits.is_array is_array]]
-[def __is_union [link boost_typetraits.is_union is_union]]
-[def __is_class [link boost_typetraits.is_class is_class]]
-[def __is_enum [link boost_typetraits.is_enum is_enum]]
-[def __is_enum [link boost_typetraits.is_enum is_enum]]
-[def __is_function [link boost_typetraits.is_function is_function]]
-
-[def __is_arithmetic [link boost_typetraits.is_arithmetic is_arithmetic]]
-[def __is_fundamental [link boost_typetraits.is_fundamental is_fundamental]]
-[def __is_object [link boost_typetraits.is_object is_object]]
-[def __is_scalar [link boost_typetraits.is_scalar is_scalar]]
-[def __is_compound [link boost_typetraits.is_compound is_compound]]
-[def __is_member_function_pointer [link boost_typetraits.is_member_function_pointer is_member_function_pointer]]
-[def __is_member_object_pointer [link boost_typetraits.is_member_object_pointer is_member_object_pointer]]
-
-[def __alignment_of [link boost_typetraits.alignment_of alignment_of]]
-[def __rank [link boost_typetraits.rank rank]]
-[def __extent [link boost_typetraits.extent extent]]
-[def __is_empty [link boost_typetraits.is_empty is_empty]]
-[def __is_const [link boost_typetraits.is_const is_const]]
-[def __is_volatile [link boost_typetraits.is_volatile is_volatile]]
-[def __is_abstract [link boost_typetraits.is_abstract is_abstract]]
-[def __is_polymorphic [link boost_typetraits.is_polymorphic is_polymorphic]]
-[def __has_virtual_destructor [link boost_typetraits.has_virtual_destructor has_virtual_destructor]]
-[def __is_pod [link boost_typetraits.is_pod is_pod]]
-[def __has_trivial_constructor [link boost_typetraits.has_trivial_constructor has_trivial_constructor]]
-[def __has_trivial_copy [link boost_typetraits.has_trivial_copy has_trivial_copy]]
-[def __has_trivial_assign [link boost_typetraits.has_trivial_assign has_trivial_assign]]
-[def __has_trivial_destructor [link boost_typetraits.has_trivial_destructor has_trivial_destructor]]
-[def __is_stateless [link boost_typetraits.is_stateless is_stateless]]
-[def __has_nothrow_constructor [link boost_typetraits.has_nothrow_constructor has_nothrow_constructor]]
-[def __has_nothrow_copy [link boost_typetraits.has_nothrow_copy has_nothrow_copy]]
-[def __has_nothrow_assign [link boost_typetraits.has_nothrow_assign has_nothrow_assign]]
-
-[def __is_base_of [link boost_typetraits.is_base_of is_base_of]]
-[def __is_convertible [link boost_typetraits.is_convertible is_convertible]]
-[def __is_same [link boost_typetraits.is_same is_same]]
-
-[def __remove_const [link boost_typetraits.remove_const remove_const]]
-[def __remove_volatile [link boost_typetraits.remove_volatile remove_volatile]]
-[def __remove_cv [link boost_typetraits.remove_cv remove_cv]]
-[def __remove_reference [link boost_typetraits.remove_reference remove_reference]]
-[def __remove_extent [link boost_typetraits.remove_extent remove_extent]]
-[def __remove_all_extents [link boost_typetraits.remove_all_extents remove_all_extents]]
-[def __remove_pointer [link boost_typetraits.remove_pointer remove_pointer]]
-[def __add_reference [link boost_typetraits.add_reference add_reference]]
-[def __add_pointer [link boost_typetraits.add_pointer add_pointer]]
-[def __add_const [link boost_typetraits.add_const add_const]]
-[def __add_volatile [link boost_typetraits.add_volatile add_volatile]]
-[def __add_cv [link boost_typetraits.add_cv add_cv]]
-
-[def __type_with_alignment [link boost_typetraits.type_with_alignment type_with_alignment]]
-[def __aligned_storage [link boost_typetraits.aligned_storage aligned_storage]]
-
-[def __function_traits [link boost_typetraits.function_traits function_traits]]
-
-[def __promote [link boost_typetraits.promote promote]]
-[def __integral_promotion [link boost_typetraits.integral_promotion integral_promotion]]
-[def __floating_point_promotion [link boost_typetraits.floating_point_promotion floating_point_promotion]]
+[def __is_void [link boost_typetraits.reference.is_void is_void]]
+[def __is_integral [link boost_typetraits.reference.is_integral is_integral]]
+[def __is_floating_point [link boost_typetraits.reference.is_floating_point is_floating_point]]
+[def __is_pointer [link boost_typetraits.reference.is_pointer is_pointer]]
+[def __is_reference [link boost_typetraits.reference.is_reference is_reference]]
+[def __is_member_pointer [link boost_typetraits.reference.is_member_pointer is_member_pointer]]
+[def __is_array [link boost_typetraits.reference.is_array is_array]]
+[def __is_union [link boost_typetraits.reference.is_union is_union]]
+[def __is_class [link boost_typetraits.reference.is_class is_class]]
+[def __is_enum [link boost_typetraits.reference.is_enum is_enum]]
+[def __is_enum [link boost_typetraits.reference.is_enum is_enum]]
+[def __is_function [link boost_typetraits.reference.is_function is_function]]
+
+[def __is_arithmetic [link boost_typetraits.reference.is_arithmetic is_arithmetic]]
+[def __is_fundamental [link boost_typetraits.reference.is_fundamental is_fundamental]]
+[def __is_object [link boost_typetraits.reference.is_object is_object]]
+[def __is_scalar [link boost_typetraits.reference.is_scalar is_scalar]]
+[def __is_compound [link boost_typetraits.reference.is_compound is_compound]]
+[def __is_member_function_pointer [link boost_typetraits.reference.is_member_function_pointer is_member_function_pointer]]
+[def __is_member_object_pointer [link boost_typetraits.reference.is_member_object_pointer is_member_object_pointer]]
+
+[def __alignment_of [link boost_typetraits.reference.alignment_of alignment_of]]
+[def __rank [link boost_typetraits.reference.rank rank]]
+[def __extent [link boost_typetraits.reference.extent extent]]
+[def __is_empty [link boost_typetraits.reference.is_empty is_empty]]
+[def __is_const [link boost_typetraits.reference.is_const is_const]]
+[def __is_volatile [link boost_typetraits.reference.is_volatile is_volatile]]
+[def __is_abstract [link boost_typetraits.reference.is_abstract is_abstract]]
+[def __is_polymorphic [link boost_typetraits.reference.is_polymorphic is_polymorphic]]
+[def __is_signed [link boost_typetraits.reference.is_signed is_signed]]
+[def __is_unsigned [link boost_typetraits.reference.is_unsigned is_unsigned]]
+[def __has_virtual_destructor [link boost_typetraits.reference.has_virtual_destructor has_virtual_destructor]]
+[def __is_pod [link boost_typetraits.reference.is_pod is_pod]]
+[def __has_trivial_constructor [link boost_typetraits.reference.has_trivial_constructor has_trivial_constructor]]
+[def __has_trivial_copy [link boost_typetraits.reference.has_trivial_copy has_trivial_copy]]
+[def __has_trivial_default_constructor [link boost_typetraits.reference.has_trivial_constructor has_trivial_default_constructor]]
+[def __has_trivial_copy_constructor [link boost_typetraits.reference.has_trivial_copy has_trivial_copy_constructor]]
+[def __has_trivial_assign [link boost_typetraits.reference.has_trivial_assign has_trivial_assign]]
+[def __has_trivial_destructor [link boost_typetraits.reference.has_trivial_destructor has_trivial_destructor]]
+[def __is_stateless [link boost_typetraits.reference.is_stateless is_stateless]]
+[def __has_nothrow_constructor [link boost_typetraits.reference.has_nothrow_constructor has_nothrow_constructor]]
+[def __has_nothrow_copy [link boost_typetraits.reference.has_nothrow_copy has_nothrow_copy]]
+[def __has_nothrow_default_constructor [link boost_typetraits.reference.has_nothrow_constructor has_nothrow_default_constructor]]
+[def __has_nothrow_copy_constructor [link boost_typetraits.reference.has_nothrow_copy has_nothrow_copy_constructor]]
+[def __has_nothrow_assign [link boost_typetraits.reference.has_nothrow_assign has_nothrow_assign]]
+
+[def __is_base_of [link boost_typetraits.reference.is_base_of is_base_of]]
+[def __is_convertible [link boost_typetraits.reference.is_convertible is_convertible]]
+[def __is_same [link boost_typetraits.reference.is_same is_same]]
+
+[def __remove_const [link boost_typetraits.reference.remove_const remove_const]]
+[def __remove_volatile [link boost_typetraits.reference.remove_volatile remove_volatile]]
+[def __remove_cv [link boost_typetraits.reference.remove_cv remove_cv]]
+[def __remove_reference [link boost_typetraits.reference.remove_reference remove_reference]]
+[def __remove_extent [link boost_typetraits.reference.remove_extent remove_extent]]
+[def __remove_all_extents [link boost_typetraits.reference.remove_all_extents remove_all_extents]]
+[def __remove_pointer [link boost_typetraits.reference.remove_pointer remove_pointer]]
+[def __add_reference [link boost_typetraits.reference.add_reference add_reference]]
+[def __add_pointer [link boost_typetraits.reference.add_pointer add_pointer]]
+[def __add_const [link boost_typetraits.reference.add_const add_const]]
+[def __add_volatile [link boost_typetraits.reference.add_volatile add_volatile]]
+[def __add_cv [link boost_typetraits.reference.add_cv add_cv]]
+
+[def __type_with_alignment [link boost_typetraits.reference.type_with_alignment type_with_alignment]]
+[def __aligned_storage [link boost_typetraits.reference.aligned_storage aligned_storage]]
+
+[def __function_traits [link boost_typetraits.reference.function_traits function_traits]]
+
+[def __promote [link boost_typetraits.reference.promote promote]]
+[def __integral_promotion [link boost_typetraits.reference.integral_promotion integral_promotion]]
+[def __floating_point_promotion [link boost_typetraits.reference.floating_point_promotion floating_point_promotion]]
+
+[def __make_signed [link boost_typetraits.reference.make_signed make_signed]]
+[def __make_unsigned [link boost_typetraits.reference.make_unsigned make_unsigned]]
+[def __decay [link boost_typetraits.reference.decay decay]]
+[def __is_complex [link boost_typetraits.reference.is_complex is_complex]]
 
 [section:intro Introduction]
 
@@ -117,2882 +130,110 @@
 
 [endsect]
 
-[section:background Background and Tutorial]
-
-The following is an updated version of the article "C++ Type traits"
-by John Maddock and Steve Cleary that appeared in the October 2000
-issue of [@http://www.ddj.com Dr Dobb's Journal].
-
-Generic programming (writing code which works with any data type meeting a
-set of requirements) has become the method of choice for providing reusable code.
-However, there are times in generic programming when "generic" just isn't
-good enough - sometimes the differences between types are too large for an
-efficient generic implementation. This is when the traits technique
-becomes important - by encapsulating those properties that need to be
-considered on a type by type basis inside a traits class, we can
-minimize the amount of code that has to differ from one type to another,
-and maximize the amount of generic code.
-
-Consider an example: when working with character strings, one common operation is
-to determine the length of a null terminated string. Clearly it's possible to
-write generic code that can do this, but it turns out that there are much more
-efficient methods available: for example, the C library functions `strlen` and
-`wcslen` are usually written in assembler, and with suitable hardware support
-can be considerably faster than a generic version written in C++.
-The authors of the C++ standard library realized this, and abstracted the
-properties of `char` and `wchar_t` into the class `char_traits`. Generic code
-that works with character strings can simply use `char_traits<>::length` to
-determine the length of a null terminated string, safe in the knowledge
-that specializations of `char_traits` will use the most appropriate method
-available to them.
-
-[h4 Type Traits]
-
-Class `char_traits` is a classic example of a collection of type specific
-properties wrapped up in a single class - what Nathan Myers termed a
-/baggage class/[link background.references \[1\]]. In the Boost type-traits library, we[link background.references \[2\]] have written a
-set of very specific traits classes, each of which encapsulate a single trait
-from the C++ type system; for example, is a type a pointer or a reference type?
-Or does a type have a trivial constructor, or a const-qualifier?
-The type-traits classes share a unified design: each class inherits from a
-the type __true_type if the type has the specified property and inherits from
-__false_type otherwise. As we will show, these classes can be used in
-generic programming to determine the properties of a given type and introduce
-optimizations that are appropriate for that case.
-
-The type-traits library also contains a set of classes that perform a
-specific transformation on a type; for example, they can remove a
-top-level const or volatile qualifier from a type. Each class that
-performs a transformation defines a single typedef-member `type`
-that is the result of the transformation. All of the type-traits
-classes are defined inside namespace `boost`; for brevity, namespace-qualification
-is omitted in most of the code samples given.
-
-[h4 Implementation]
-
-There are far too many separate classes contained in the type-traits library
-to give a full implementation here - see the source code in the Boost library
-for the full details - however, most of the implementation is fairly repetitive
-anyway, so here we will just give you a flavor for how some of the classes are
-implemented. Beginning with possibly the simplest class in the library,
-`is_void<T>` inherits from `__true_type` only if `T` is `void`.
-
- template <typename T>
- struct __is_void : public __false_type{};
-
- template <>
- struct __is_void<void> : public __true_type{};
-
-Here we define a primary version of the template class `__is_void`, and
-provide a full-specialization when `T` is `void`. While full specialization
-of a template class is an important technique, sometimes we need a
-solution that is halfway between a fully generic solution, and a full
-specialization. This is exactly the situation for which the standards committee
-defined partial template-class specialization. As an example, consider the
-class `boost::is_pointer<T>`: here we needed a primary version that handles
-all the cases where T is not a pointer, and a partial specialization to
-handle all the cases where T is a pointer:
-
- template <typename T>
- struct __is_pointer : public __false_type{};
-
- template <typename T>
- struct __is_pointer<T*> : public __true_type{};
-
-The syntax for partial specialization is somewhat arcane and could easily
-occupy an article in its own right; like full specialization, in order to
-write a partial specialization for a class, you must first declare the
-primary template. The partial specialization contains an extra <...> after the
-class name that contains the partial specialization parameters; these define
-the types that will bind to that partial specialization rather than the
-default template. The rules for what can appear in a partial specialization
-are somewhat convoluted, but as a rule of thumb if you can legally write two
-function overloads of the form:
-
- void foo(T);
- void foo(U);
-
-Then you can also write a partial specialization of the form:
-
- template <typename T>
- class c{ /*details*/ };
-
- template <typename T>
- class c<U>{ /*details*/ };
-
-This rule is by no means foolproof, but it is reasonably simple to remember
-and close enough to the actual rule to be useful for everyday use.
-
-As a more complex example of partial specialization consider the class
-`remove_extent<T>`. This class defines a single typedef-member `type` that
-is the same type as T but with any top-level array bounds removed;
-this is an example of a traits class that performs a transformation on a type:
-
- template <typename T>
- struct __remove_extent
- { typedef T type; };
-
- template <typename T, std::size_t N>
- struct __remove_extent<T[N]>
- { typedef T type; };
-
-The aim of `__remove_extent` is this: imagine a generic algorithm that is
-passed an array type as a template parameter, `__remove_extent` provides a
-means of determining the underlying type of the array. For example
-`remove_extent<int[4][5]>::type` would evaluate to the type `int[5]`.
-This example also shows that the number of template parameters in a
-partial specialization does not have to match the number in the
-default template. However, the number of parameters that appear after the
-class name do have to match the number and type of the parameters in the
-default template.
-
-[h4 Optimized copy]
-
-As an example of how the type traits classes can be used, consider the
-standard library algorithm copy:
-
- template<typename Iter1, typename Iter2>
- Iter2 copy(Iter1 first, Iter1 last, Iter2 out);
-
-Obviously, there's no problem writing a generic version of copy that works
-for all iterator types `Iter1` and `Iter2`; however, there are some
-circumstances when the copy operation can best be performed by a call to
-`memcpy`. In order to implement copy in terms of `memcpy` all of the
-following conditions need to be met:
-
-* Both of the iterator types `Iter1` and `Iter2` must be pointers.
-* Both `Iter1` and `Iter2` must point to the same type - excluding const and
-volatile-qualifiers.
-* The type pointed to by `Iter1` must have a trivial assignment operator.
-
-By trivial assignment operator we mean that the type is either a scalar type[link background.references \[3\]] or:
-
-* The type has no user defined assignment operator.
-* The type does not have any data members that are references.
-* All base classes, and all data member objects must have trivial assignment operators.
-
-If all these conditions are met then a type can be copied using `memcpy`
-rather than using a compiler generated assignment operator. The type-traits
-library provides a class `__has_trivial_assign`, such that
-`has_trivial_assign<T>::value` is true only if T has a trivial assignment operator.
-This class "just works" for scalar types, but has to be explicitly
-specialised for class/struct types that also happen to have a trivial assignment
-operator. In other words if __has_trivial_assign gives the wrong answer,
-it will give the "safe" wrong answer - that trivial assignment is not allowable.
-
-The code for an optimized version of copy that uses `memcpy` where appropriate is
-given in [link boost_typetraits.copy the examples]. The code begins by defining a template
-function `do_copy` that performs a "slow but safe" copy. The last parameter passed
-to this function may be either a `__true_type` or a `__false_type`. Following that
-there is an overload of do_copy that uses `memcpy`: this time the iterators are required
-to actually be pointers to the same type, and the final parameter must be a
-`__true_type`. Finally, the version of `copy` calls `do_copy`, passing
-`__has_trivial_assign<value_type>()` as the final parameter: this will dispatch
-to the optimized version where appropriate, otherwise it will call the
-"slow but safe version".
-
-[h4 Was it worth it?]
-
-It has often been repeated in these columns that "premature optimization is the
-root of all evil" [link background.references \[4\]]. So the question must be asked: was our optimization
-premature? To put this in perspective the timings for our version of copy
-compared a conventional generic copy[link background.references \[5\]] are shown in table 1.
-
-Clearly the optimization makes a difference in this case; but, to be fair,
-the timings are loaded to exclude cache miss effects - without this
-accurate comparison between algorithms becomes difficult. However, perhaps
-we can add a couple of caveats to the premature optimization rule:
-
-*If you use the right algorithm for the job in the first place then optimization
-will not be required; in some cases, memcpy is the right algorithm.
-*If a component is going to be reused in many places by many people then
-optimizations may well be worthwhile where they would not be so for a single
-case - in other words, the likelihood that the optimization will be
-absolutely necessary somewhere, sometime is that much higher.
-Just as importantly the perceived value of the stock implementation will be
-higher: there is no point standardizing an algorithm if users reject it on
-the grounds that there are better, more heavily optimized versions available.
-
-[table Time taken to copy 1000 elements using `copy<const T*, T*>` (times in micro-seconds)
-
-[[Version] [T] [Time]]
-[["Optimized" copy] [char] [0.99]]
-[[Conventional copy] [char] [8.07]]
-[["Optimized" copy] [int] [2.52]]
-[[Conventional copy] [int] [8.02]]
-]
-
-[h4 Pair of References]
-The optimized copy example shows how type traits may be used to perform
-optimization decisions at compile-time. Another important usage of type traits
-is to allow code to compile that otherwise would not do so unless excessive
-partial specialization is used. This is possible by delegating partial
-specialization to the type traits classes. Our example for this form of
-usage is a pair that can hold references [link background.references \[6\]].
-
-First, let us examine the definition of `std::pair`, omitting the
-comparison operators, default constructor, and template copy constructor for
-simplicity:
-
- template <typename T1, typename T2>
- struct pair
- {
- typedef T1 first_type;
- typedef T2 second_type;
-
- T1 first;
- T2 second;
-
- pair(const T1 & nfirst, const T2 & nsecond)
- :first(nfirst), second(nsecond) { }
- };
-
-Now, this "pair" cannot hold references as it currently stands, because the
-constructor would require taking a reference to a reference, which is
-currently illegal [link background.references \[7\]]. Let us consider what the constructor's parameters
-would have to be in order to allow "pair" to hold non-reference types,
-references, and constant references:
-
-[table Required Constructor Argument Types
-[[Type of `T1`] [Type of parameter to initializing constructor]]
-[[T] [const T &]]
-[[T &] [T &]]
-[[const T &] [const T &]]
-]
-
-A little familiarity with the type traits classes allows us to construct a
-single mapping that allows us to determine the type of parameter from the
-type of the contained class. The type traits classes provide a
-transformation __add_reference, which adds a reference to its type,
-unless it is already a reference.
-
-[table Using add_reference to synthesize the correct constructor type
-[[Type of `T1`] [Type of `const T1`] [Type of `add_reference<const T1>::type`]]
-[[T] [const T] [const T &]]
-[[T &] [T & \[8\]] [T &]]
-[[const T &] [const T &] [const T &]]
-]
-
-This allows us to build a primary template definition for `pair` that can
-contain non-reference types, reference types, and constant reference types:
-
- template <typename T1, typename T2>
- struct pair
- {
- typedef T1 first_type;
- typedef T2 second_type;
-
- T1 first;
- T2 second;
-
- pair(boost::__add_reference<const T1>::type nfirst,
- boost::__add_reference<const T2>::type nsecond)
- :first(nfirst), second(nsecond) { }
- };
-
-Add back in the standard comparison operators, default constructor,
-and template copy constructor (which are all the same), and you have a
-`std::pair` that can hold reference types!
-
-This same extension could have been done using partial template specialization
-of `pair`, but to specialize `pair` in this way would require three partial
-specializations, plus the primary template. Type traits allows us to
-define a single primary template that adjusts itself auto-magically to
-any of these partial specializations, instead of a brute-force partial
-specialization approach. Using type traits in this fashion allows
-programmers to delegate partial specialization to the type traits classes,
-resulting in code that is easier to maintain and easier to understand.
-
-[h4 Conclusion]
-
-We hope that in this article we have been able to give you some idea of
-what type-traits are all about. A more complete listing of the available
-classes are in the boost documentation, along with further examples using
-type traits. Templates have enabled C++ uses to take the advantage of the
-code reuse that generic programming brings; hopefully this article has
-shown that generic programming does not have to sink to the lowest common
-denominator, and that templates can be optimal as well as generic.
-
-[h4 Acknowledgements]
-
-The authors would like to thank Beman Dawes and Howard Hinnant for their
-helpful comments when preparing this article.
-
-[h4 References]
-
-# Nathan C. Myers, C++ Report, June 1995.
-# The type traits library is based upon contributions by Steve Cleary, Beman Dawes, Howard Hinnant and John Maddock: it can be found at www.boost.org.
-# A scalar type is an arithmetic type (i.e. a built-in integer or floating point type), an enumeration type, a pointer, a pointer to member, or a const- or volatile-qualified version of one of these types.
-# This quote is from Donald Knuth, ACM Computing Surveys, December 1974, pg 268.
-# The test code is available as part of the boost utility library (see algo_opt_examples.cpp), the code was compiled with gcc 2.95 with all optimisations turned on, tests were conducted on a 400MHz Pentium II machine running Microsoft Windows 98.
-# John Maddock and Howard Hinnant have submitted a "compressed_pair" library to Boost, which uses a technique similar to the one described here to hold references. Their pair also uses type traits to determine if any of the types are empty, and will derive instead of contain to conserve space -- hence the name "compressed".
-# This is actually an issue with the C++ Core Language Working Group (issue #106), submitted by Bjarne Stroustrup. The tentative resolution is to allow a "reference to a reference to T" to mean the same thing as a "reference to T", but only in template instantiation, in a method similar to multiple cv-qualifiers.
-# For those of you who are wondering why this shouldn't be const-qualified, remember that references are always implicitly constant (for example, you can't re-assign a reference). Remember also that "const T &" is something completely different. For this reason, cv-qualifiers on template type arguments that are references are ignored.
-
-[endsect]
+[include background.qbk]
 
 [section:category Type Traits by Category]
-[section:value_traits Type Traits that Describe the Properties of a Type]
-
-These traits are all /value traits/, which is to say the traits classes all
-inherit from __integral_constant, and are used to access some numerical
-property of a type. Often this is a simple true or false Boolean value,
-but in a few cases may be some other integer value (for example when dealing
-with type alignments, or array bounds: see `__alignment_of`, `__rank` and `__extent`).
-
-[section:primary Categorizing a Type]
-
-These traits identify what "kind" of type some type `T` is. These are split into
-two groups: primary traits which are all mutually exclusive, and composite traits
-that are compositions of one or more primary traits.
-
-For any given type, exactly one primary type trait will inherit from
-__true_type, and all the others will inherit from __false_type, in other
-words these traits are mutually exclusive.
-
-This means that `__is_integral<T>::value` and `__is_floating_point<T>::value`
-will only ever be true for built-in types; if you want to check for a
-user-defined class type that behaves "as if" it is an integral or floating point type,
-then use the `std::numeric_limits template` instead.
-
-[*Synopsis:]
-
- template <class T>
- struct __is_array<T>;
-
- template <class T>
- struct __is_class<T>;
-
- template <class T>
- struct __is_enum<T>;
-
- template <class T>
- struct __is_floating_point<T>;
-
- template <class T>
- struct __is_function<T>;
-
- template <class T>
- struct __is_integral<T>;
-
- template <class T>
- struct __is_member_function_pointer<T>;
-
- template <class T>
- struct __is_member_object_pointer<T>;
-
- template <class T>
- struct __is_pointer<T>;
-
- template <class T>
- struct __is_reference<T>;
-
- template <class T>
- struct __is_union<T>;
-
- template <class T>
- struct __is_void<T>;
-
-The following traits are made up of the union of one or more type
-categorizations. A type may belong to more than one of these categories,
-in addition to one of the primary categories.
-
- template <class T>
- struct __is_arithmetic;
-
- template <class T>
- struct __is_compound;
-
- template <class T>
- struct __is_fundamental;
-
- template <class T>
- struct __is_member_pointer;
-
- template <class T>
- struct __is_object;
-
- template <class T>
- struct __is_scalar;
-
-[endsect]
-
-[section:properties General Type Properties]
-
-The following templates describe the general properties of a type.
-
-[*Synopsis:]
-
- template <class T>
- struct __alignment_of;
-
- template <class T>
- struct __has_nothrow_assign;
-
- template <class T>
- struct __has_nothrow_constructor;
-
- template <class T>
- struct __has_nothrow_copy;
-
- template <class T>
- struct __has_trivial_assign;
-
- template <class T>
- struct __has_trivial_constructor;
-
- template <class T>
- struct __has_trivial_copy;
-
- template <class T>
- struct __has_trivial_destructor;
-
- template <class T>
- struct __has_virtual_destructor;
-
- template <class T>
- struct __is_abstract;
-
- template <class T>
- struct __is_const;
-
- template <class T>
- struct __is_empty;
-
- template <class T>
- struct __is_stateless;
-
- template <class T>
- struct __is_pod;
-
- template <class T>
- struct __is_polymorphic;
-
- template <class T>
- struct __is_volatile;
-
- template <class T, std::size_t N = 0>
- struct __extent;
-
- template <class T>
- struct __rank;
-
-[endsect]
-
-[section:relate Relationships Between Two Types]
-
-These templates determine the whether there is a relationship
-between two types:
-
-[*Synopsis:]
-
- template <class Base, class Derived>
- struct __is_base_of;
-
- template <class From, class To>
- struct __is_convertible;
-
- template <class T, class U>
- struct __is_same;
-
-[endsect]
-
-[endsect]
-[section:transform Type Traits that Transform One Type to Another]
-
-The following templates transform one type to another,
-based upon some well-defined rule.
-Each template has a single member called `type` that is the
-result of applying the transformation to the template argument `T`.
-
-[*Synopsis:]
-
- template <class T>
- struct __add_const;
-
- template <class T>
- struct __add_cv;
-
- template <class T>
- struct __add_pointer;
-
- template <class T>
- struct __add_reference;
-
- template <class T>
- struct __add_volatile;
-
- template <class T>
- struct __floating_point_promotion;
-
- template <class T>
- struct __integral_promotion;
-
- template <class T>
- struct __promote;
-
- template <class T>
- struct __remove_all_extents;
-
- template <class T>
- struct __remove_const;
-
- template <class T>
- struct __remove_cv;
-
- template <class T>
- struct __remove_extent;
-
- template <class T>
- struct __remove_pointer;
-
- template <class T>
- struct __remove_reference;
-
- template <class T>
- struct __remove_volatile;
-
-[h4 Broken Compiler Workarounds:]
-
-For all of these templates support for partial specialization of class templates is
-required to correctly implement the transformation.
-On the other hand, practice shows that many of the templates from this
-category are very useful, and often essential for implementing some
-generic libraries. Lack of these templates is often one of the major
-limiting factors in porting those libraries to compilers that do not yet
-support this language feature. As some of these compilers are going to be
-around for a while, and at least one of them is very wide-spread,
-it was decided that the library should provide workarounds where possible.
-
-The basic idea behind the workaround is to manually define full
-specializations of all type transformation templates for all fundamental types,
-and all their 1st and 2nd rank cv-[un]qualified derivative pointer types, and to
-provide a user-level macro that will define all the explicit specializations needed
-for any user-defined type T.
-
-The first part guarantees the successful compilation of something like this:
-
- BOOST_STATIC_ASSERT((is_same<char, remove_reference<char&>::type>::value));
- BOOST_STATIC_ASSERT((is_same<char const, remove_reference<char const&>::type>::value));
- BOOST_STATIC_ASSERT((is_same<char volatile, remove_reference<char volatile&>::type>::value));
- BOOST_STATIC_ASSERT((is_same<char const volatile, remove_reference<char const volatile&>::type>::value));
- BOOST_STATIC_ASSERT((is_same<char*, remove_reference<char*&>::type>::value));
- BOOST_STATIC_ASSERT((is_same<char const*, remove_reference<char const*&>::type>::value));
- ...
- BOOST_STATIC_ASSERT((is_same<char const volatile* const volatile* const volatile, remove_reference<char const volatile* const volatile* const volatile&>::type>::value));
-
-and the second part provides the library's users with a mechanism to make the
-above code work not only for `char`, `int` or other built-in type,
-but for their own types as well:
-
- namespace myspace{
- struct MyClass {};
- }
- // declare this at global scope:
- BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(myspace::MyClass)
- // transformations on myspace::MyClass now work:
- BOOST_STATIC_ASSERT((is_same<myspace::MyClass, remove_reference<myspace::MyClass&>::type>::value));
- BOOST_STATIC_ASSERT((is_same<myspace::MyClass, remove_const<myspace::MyClass const>::type>::value));
- // etc.
-
-Note that the macro BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION evaluates
-to nothing on those compilers that *do* support partial specialization.
-
-[endsect]
-
-[section:alignment Synthesizing Types with Specific Alignments]
-
-Some low level memory management routines need to synthesize a POD type with
-specific alignment properties. The template `__type_with_alignment` finds the smallest
-type with a specified alignment, while template `__aligned_storage` creates a type
-with a specific size and alignment.
-
-[*Synopsis]
-
- template <std::size_t Align>
- struct __type_with_alignment;
-
- template <std::size_t Size, std::size_t Align>
- struct __aligned_storage;
-
-[endsect]
-
-[section:function Decomposing Function Types]
-
-The class template __function_traits extracts information from function types
-(see also __is_function). This traits class allows you to tell how many arguments
-a function takes, what those argument types are, and what the return type is.
-
-[*Synopsis]
-
- template <std::size_t Align>
- struct __function_traits;
-
-[endsect]
-
-[endsect]
-
-[section:user_defined User Defined Specializations]
-
-Occationally the end user may need to provide their own specialization
-for one of the type traits - typically where intrinsic compiler support
-is required to implement a specific trait fully.
-These specializations should derive from boost::__true_type or boost::__false_type
-as appropriate:
-
- #include <boost/type_traits/is_pod.hpp>
- #include <boost/type_traits/is_class.hpp>
- #include <boost/type_traits/is_union.hpp>
-
- struct my_pod{};
- struct my_union
- {
- char c;
- int i;
- };
-
- namespace boost
- {
- template<>
- struct __is_pod<my_pod> : public __true_type{};
-
- template<>
- struct __is_pod<my_union> : public __true_type{};
-
- template<>
- struct __is_union<my_union> : public __true_type{};
-
- template<>
- struct __is_class<my_union> : public __false_type{};
- }
-
-[endsect]
-
-[section:intrinsics Support for Compiler Intrinsics]
-
-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 (May 2005) MWCW 9 and Visual C++ 8
-provide 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_union
-* __is_pod
-* __has_trivial_constructor
-* __has_trivial_copy
-* __has_trivial_assign
-* __has_trivial_destructor
-* __has_nothrow_constructor
-* __has_nothrow_copy
-* __has_nothrow_assign
-* __has_virtual_destructor
-
-The following traits classes can't be portably implemented in the C++ language,
-although in practice, the implementations do in fact do the right thing on all
-the compilers we know about:
-
-* __is_empty
-* __is_polymorphic
-
-The following traits classes are dependent on one or more of the above:
-
-* __is_class
-* __is_stateless
-
-The hooks for compiler-intrinsic support are defined in
-[@../../boost/type_traits/intrinsics.hpp boost/type_traits/intrinsics.hpp], adding support for new compilers is simply
-a matter of defining one of more of the following macros:
-
-[table Macros for Compiler Intrinsics
- [[BOOST_IS_UNION(T)][Should evaluate to true if T is a union type]]
- [[BOOST_IS_POD(T)][Should evaluate to true if T is a POD type]]
- [[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_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_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]]
- [[BOOST_HAS_NOTHROW_ASSIGN(T)][Should evaluate to true if `T t, u; t = u` can not throw]]
- [[BOOST_HAS_VIRTUAL_DESTRUCTOR(T)][Should evaluate to true T has a virtual destructor]]
-]
-
-[endsect]
-
-[section:mpl MPL Interoperability]
-
-All the value based traits in this library conform to MPL's requirements
-for an [@../../libs/mpl/doc/refmanual/integral-constant.html Integral Constant type]: that includes a number of rather intrusive
-workarounds for broken compilers.
-
-Purely as an implementation detail, this
-means that `__true_type` inherits from [@../../libs/mpl/doc/refmanual/bool.html `boost::mpl::true_`], `__false_type` inherits
-from [@../../libs/mpl/doc/refmanual/bool.html `boost::mpl::false_`], and `__integral_constant<T, v>` inherits from
-[@../../libs/mpl/doc/refmanual/integral-c.html `boost::mpl::integral_c<T,v>`] (provided `T` is not `bool`)
-
-[endsect]
-
-[section:examples Examples]
-
-[section:copy An Optimized Version of std::copy]
-
-Demonstrates a version of `std::copy` that uses `__has_trivial_assign` to
-determine whether to use `memcpy` to optimise the copy operation
-(see [@../../libs/type_traits/examples/copy_example.cpp copy_example.cpp]):
-
- //
- // opt::copy
- // same semantics as std::copy
- // calls memcpy where appropriate.
- //
-
- namespace detail{
-
- template<typename I1, typename I2, bool b>
- I2 copy_imp(I1 first, I1 last, I2 out, const boost::__integral_constant<bool, b>&)
- {
- while(first != last)
- {
- *out = *first;
- ++out;
- ++first;
- }
- return out;
- }
-
- template<typename T>
- T* copy_imp(const T* first, const T* last, T* out, const boost::__true_type&)
- {
- memcpy(out, first, (last-first)*sizeof(T));
- return out+(last-first);
- }
-
-
- }
-
- template<typename I1, typename I2>
- inline I2 copy(I1 first, I1 last, I2 out)
- {
- //
- // We can copy with memcpy if T has a trivial assignment operator,
- // and if the iterator arguments are actually pointers (this last
- // requirement we detect with overload resolution):
- //
- typedef typename std::iterator_traits<I1>::value_type value_type;
- return detail::copy_imp(first, last, out, boost::__has_trivial_assign<value_type>());
- }
-
-
-[endsect]
-
-[section:fill An Optimised Version of std::fill]
-
-Demonstrates a version of `std::fill` that uses `__has_trivial_assign` to
-determine whether to use `memset` to optimise the fill operation
-(see [@../../libs/type_traits/examples/fill_example.cpp fill_example.cpp]):
-
- //
- // fill
- // same as std::fill, but uses memset where appropriate
- //
- namespace detail{
-
- template <typename I, typename T, bool b>
- void do_fill(I first, I last, const T& val, const boost::__integral_constant<bool, b>&)
- {
- while(first != last)
- {
- *first = val;
- ++first;
- }
- }
-
- template <typename T>
- void do_fill(T* first, T* last, const T& val, const boost::__true_type&)
- {
- std::memset(first, val, last-first);
- }
-
- }
-
- template <class I, class T>
- inline void fill(I first, I last, const T& val)
- {
- //
- // We can do an optimised fill if T has a trivial assignment
- // operator and if it's size is one:
- //
- typedef boost::__integral_constant<bool,
- ::boost::__has_trivial_assign<T>::value && (sizeof(T) == 1)> truth_type;
- detail::do_fill(first, last, val, truth_type());
- }
-
-
-[endsect]
-
-[section:destruct An Example that Omits Destructor Calls For Types with Trivial Destructors]
-
-Demonstrates a simple algorithm that uses `__has_trivial_destruct` to
-determine whether to destructors need to be called
-(see [@../../libs/type_traits/examples/trivial_destructor_example.cpp trivial_destructor_example.cpp]):
-
- //
- // algorithm destroy_array:
- // The reverse of std::unitialized_copy, takes a block of
- // initialized memory and calls destructors on all objects therein.
- //
-
- namespace detail{
-
- template <class T>
- void do_destroy_array(T* first, T* last, const boost::__false_type&)
- {
- while(first != last)
- {
- first->~T();
- ++first;
- }
- }
-
- template <class T>
- inline void do_destroy_array(T* first, T* last, const boost::__true_type&)
- {
- }
-
- } // namespace detail
-
- template <class T>
- inline void destroy_array(T* p1, T* p2)
- {
- detail::do_destroy_array(p1, p2, ::boost::__has_trivial_destructor<T>());
- }
 
+[include value_traits.qbk]
+[include transform_traits.qbk]
+[include alignment_traits.qbk]
+[include decomposing_func.qbk]
 
 [endsect]
 
-[section:iter An improved Version of std::iter_swap]
-
-Demonstrates a version of `std::iter_swap` that use type traits to
-determine whether an it's arguments are proxying iterators or not,
-if they're not then it just does a `std::swap` of it's dereferenced
-arguments (the
-same as `std::iter_swap` does), however if they are proxying iterators
-then takes special care over the swap to ensure that the algorithm
-works correctly for both proxying iterators, and even iterators of
-different types
-(see [@../../libs/type_traits/examples/iter_swap_example.cpp iter_swap_example.cpp]):
-
- //
- // iter_swap:
- // tests whether iterator is a proxying iterator or not, and
- // uses optimal form accordingly:
- //
- namespace detail{
-
- template <typename I>
- static void do_swap(I one, I two, const boost::__false_type&)
- {
- typedef typename std::iterator_traits<I>::value_type v_t;
- v_t v = *one;
- *one = *two;
- *two = v;
- }
- template <typename I>
- static void do_swap(I one, I two, const boost::__true_type&)
- {
- using std::swap;
- swap(*one, *two);
- }
-
- }
-
- template <typename I1, typename I2>
- inline void iter_swap(I1 one, I2 two)
- {
- //
- // See is both arguments are non-proxying iterators,
- // and if both iterator the same type:
- //
- typedef typename std::iterator_traits<I1>::reference r1_t;
- typedef typename std::iterator_traits<I2>::reference r2_t;
-
- typedef boost::__integral_constant<bool,
- ::boost::__is_reference<r1_t>::value
- && ::boost::__is_reference<r2_t>::value
- && ::boost::__is_same<r1_t, r2_t>::value> truth_type;
-
- detail::do_swap(one, two, truth_type());
- }
-
-
-[endsect]
-
-[section:to_double Convert Numeric Types and Enums to double]
-
-Demonstrates a conversion of
-[@../../libs/numeric/conversion/doc/definitions.html#numtypes Numeric Types]
-and enum types to double:
-
- template<class T>
- inline double to_double(T const& value)
- {
- typedef typename boost::promote<T>::type promoted;
- return boost::numeric::converter<double,promoted>::convert(value);
- }
-
-[endsect]
-
-[endsect]
+[include user_defined.qbk]
+[include intrinsics.qbk]
+[include mpl.qbk]
+[include examples.qbk]
 
 [section:reference Alphabetical Reference]
 
-[section:add_const add_const]
-
- template <class T>
- struct add_const
- {
- typedef __below type;
- };
-
-__type The same type as `T const` for all `T`.
-
-__std_ref 3.9.3.
-
-__compat If the compiler does not support partial specialization of class-templates
-then this template will compile, but the member `type` will always be the same as
-type `T` except where __transform_workaround have been applied.
-
-__header ` #include <boost/type_traits/add_const.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[table Examples
-
-[ [Expression] [Result Type]]
-
-[[`add_const<int>::type`][`int const`]]
-
-[[`add_const<int&>::type`] [`int&`]]
-
-[[`add_const<int*>::type`] [`int* const`]]
-
-[[`add_const<int const>::type`] [`int const`]]
-
-]
-
-[endsect]
-
-[section:add_cv add_cv]
-
- template <class T>
- struct add_cv
- {
- typedef __below type;
- };
-
-__type The same type as `T const volatile` for all `T`.
-
-__std_ref 3.9.3.
-
-__compat If the compiler does not support partial specialization of class-templates
-then this template will compile, but the member `type` will always be the same as
-type `T` except where __transform_workaround have been applied.
-
-__header ` #include <boost/type_traits/add_cv.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[table Examples
-
-[ [Expression] [Result Type]]
-
-[[`add_cv<int>::type`][`int const volatile`]]
-
-[[`add_cv<int&>::type`] [`int&`]]
-
-[[`add_cv<int*>::type`] [`int* const volatile`]]
-
-[[`add_cv<int const>::type`] [`int const volatile`]]
-
-]
-
-[endsect]
-
-[section:add_pointer add_pointer]
-
- template <class T>
- struct add_pointer
- {
- typedef __below type;
- };
-
-__type The same type as `remove_reference<T>::type*`.
-
-The rationale for this template
-is that it produces the same type as `TYPEOF(&t)`,
-where `t` is an object of type `T`.
-
-__std_ref 8.3.1.
-
-__compat If the compiler does not support partial specialization of class-templates
-then this template will compile, but the member `type` will always be the same as
-type `T` except where __transform_workaround have been applied.
-
-__header ` #include <boost/type_traits/add_pointer.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[table Examples
-
-[ [Expression] [Result Type]]
-
-[[`add_pointer<int>::type`][`int*`]]
-
-[[`add_pointer<int const&>::type`] [`int const*`]]
-
-[[`add_pointer<int*>::type`] [`int**`]]
-
-[[`add_pointer<int*&>::type`] [`int**`]]
-
-]
-
-[endsect]
-
-[section:add_reference add_reference]
-
- template <class T>
- struct add_reference
- {
- typedef __below type;
- };
-
-__type If `T` is not a reference type then `T&`, otherwise `T`.
-
-__std_ref 8.3.2.
-
-__compat If the compiler does not support partial specialization of class-templates
-then this template will compile, but the member `type` will always be the same as
-type `T` except where __transform_workaround have been applied.
-
-__header ` #include <boost/type_traits/add_reference.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[table Examples
-
-[ [Expression] [Result Type]]
-
-[[`add_reference<int>::type`][`int&`]]
-
-[[`add_reference<int const&>::type`] [`int const&`]]
-
-[[`add_reference<int*>::type`] [`int*&`]]
-
-[[`add_reference<int*&>::type`] [`int*&`]]
-
-]
-
-[endsect]
-
-[section:add_volatile add_volatile]
-
- template <class T>
- struct add_volatile
- {
- typedef __below type;
- };
-
-__type The same type as `T volatile` for all `T`.
-
-__std_ref 3.9.3.
-
-__compat If the compiler does not support partial specialization of class-templates
-then this template will compile, but the member `type` will always be the same as
-type `T` except where __transform_workaround have been applied.
-
-__header ` #include <boost/type_traits/add_volatile.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[table Examples
-
-[ [Expression] [Result Type]]
-
-[[`add_volatile<int>::type`][`int volatile`]]
-
-[[`add_volatile<int&>::type`] [`int&`]]
-
-[[`add_volatile<int*>::type`] [`int* volatile`]]
-
-[[`add_volatile<int const>::type`] [`int const volatile`]]
-
-]
-
-[endsect]
-
-[section:aligned_storage aligned_storage]
-
- template <std::size_t Size, std::size_t Align>
- struct aligned_storage
- {
- typedef __below type;
- };
-
-__type a built-in or POD type with size `Size` and an alignment
-that is a multiple of `Align`.
-
-__header ` #include <boost/type_traits/aligned_storage.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[endsect]
-
-[section:alignment_of alignment_of]
- template <class T>
- struct alignment_of : public __integral_constant<std::size_t, ALIGNOF(T)> {};
-
-__inherit Class template alignment_of inherits from
-`__integral_constant<std::size_t, ALIGNOF(T)>`, where `ALIGNOF(T)` is the
-alignment of type T.
-
-['Note: strictly speaking you should only rely on
-the value of `ALIGNOF(T)` being a multiple of the true alignment of T, although
-in practice it does compute the correct value in all the cases we know about.]
-
-__header ` #include <boost/type_traits/alignment_of.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`alignment_of<int>` inherits from `__integral_constant<std::size_t, ALIGNOF(int)>`.]
-
-[:`alignment_of<char>::type` is the type `__integral_constant<std::size_t, ALIGNOF(char)>`.]
-
-[:`alignment_of<double>::value` is an integral constant
-expression with value `ALIGNOF(double)`.]
-
-[:`alignment_of<T>::value_type` is the type `std::size_t`.]
-
-[endsect]
-
-[section:extent extent]
- template <class T, std::size_t N = 0>
- struct extent : public __integral_constant<std::size_t, EXTENT(T,N)> {};
-
-__inherit Class template extent inherits from `__integral_constant<std::size_t, EXTENT(T,N)>`,
-where `EXTENT(T,N)` is the number of elements in the N'th array dimention of type `T`.
-
-If `T` is not an array type, or if `N > __rank<T>::value`, or if the N'th array bound
-is incomplete, then `EXTENT(T,N)` is zero.
-
-__header ` #include <boost/type_traits/extent.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`extent<int[1]>` inherits from `__integral_constant<std::size_t, 1>`.]
-
-[:`extent<double[2][3][4], 1>::type` is the type `__integral_constant<std::size_t, 3>`.]
-
-[:`extent<int[4]>::value` is an integral constant
-expression that evaluates to /4/.]
-
-[:`extent<int[][2]>::value` is an integral constant
-expression that evaluates to /0/.]
-
-[:`extent<int[][2], 1>::value` is an integral constant
-expression that evaluates to /2/.]
-
-[:`extent<int*>::value` is an integral constant
-expression that evaluates to /0/.]
-
-[:`extent<T>::value_type` is the type `std::size_t`.]
-
-[endsect]
-
-[section:floating_point_promotion floating_point_promotion]
-
- template <class T>
- struct floating_point_promotion
- {
- typedef __below type;
- };
-
-__type If floating point promotion can be applied to an rvalue of type `T`,
-then applies floating point promotion to `T` and keeps cv-qualifiers of `T`,
-otherwise leaves `T` unchanged.
-
-__std_ref 4.6.
-
-__header ` #include <boost/type_traits/floating_point_promotion.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[table Examples
-
-[ [Expression] [Result Type]]
-
-[[`floating_point_promotion<float const>::type`][`double const`]]
-
-[[`floating_point_promotion<float&>::type`][`float&`]]
-
-[[`floating_point_promotion<short>::type`][`short`]]
-
-]
-
-[endsect]
-
-[section:function_traits function_traits]
-[def __argN '''arg<replaceable>N</replaceable>_type''']
-
- template <class T>
- struct function_traits
- {
- static const std::size_t arity = __below;
- typedef __below result_type;
- typedef __below __argN;
- };
-
-The class template function_traits will only compile if:
-
-* The compiler supports partial specialization of class templates.
-* The template argument `T` is a /function type/, note that this ['[*is not]]
-the same thing as a /pointer to a function/.
-
-[table Function Traits Members
-[[Member] [Description]]
-[[`function_traits<T>::arity`]
- [An integral constant expression that gives the number of arguments accepted by the function type `F`.]]
-[[`function_traits<T>::result_type`]
- [The type returned by function type `F`.]]
-[[`function_traits<T>::__argN`]
- [The '''<replaceable>N</replaceable>th''' argument type of function type `F`, where `1 <= N <= arity` of `F`.]]
-]
-
-[table Examples
-[[Expression] [Result]]
-[[`function_traits<void (void)>::arity`] [An integral constant expression that has the value 0.]]
-[[`function_traits<long (int)>::arity`] [An integral constant expression that has the value 1.]]
-[[`function_traits<long (int, long, double, void*)>::arity`] [An integral constant expression that has the value 4.]]
-[[`function_traits<void (void)>::result_type`] [The type `void`.]]
-[[`function_traits<long (int)>::result_type`] [The type `long`.]]
-[[`function_traits<long (int)>::arg1_type`] [The type `int`.]]
-[[`function_traits<long (int, long, double, void*)>::arg4_type`] [The type `void*`.]]
-[[`function_traits<long (int, long, double, void*)>::arg5_type`] [A compiler error: there is no `arg4_type` since there are only three arguments.]]
-[[`function_traits<long (*)(void)>::arity`] [A compiler error: argument type is a /function pointer/, and not a /function type/.]]
-
-]
-
-[endsect]
-
-[section:has_nothrow_assign has_nothrow_assign]
-
- template <class T>
- struct has_nothrow_assign : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) type with a non-throwing assignment-operator
-then inherits from __true_type, otherwise inherits from __false_type. Type `T`
-must be a complete type.
-
-__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,
-`has_nothrow_assign` will never report that a class or struct has a
-non-throwing assignment-operator; this is always safe, if possibly sub-optimal.
-Currently (May 2005) only Visual C++ 8 has the necessary compiler support to ensure that this
-trait "just works".
-
-__header ` #include <boost/type_traits/has_nothrow_assign.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[endsect]
-
-[section:has_nothrow_constructor has_nothrow_constructor]
- template <class T>
- struct has_nothrow_constructor : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) type with a non-throwing default-constructor
-then inherits from __true_type, otherwise inherits from __false_type. Type `T`
-must be a complete type.
-
-__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,
-`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".
-
-__header ` #include <boost/type_traits/has_nothrow_constructor.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[endsect]
-
-[section:has_nothrow_copy has_nothrow_copy]
- template <class T>
- struct has_nothrow_copy : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) type with a non-throwing copy-constructor
-then inherits from __true_type, otherwise inherits from __false_type. Type `T`
-must be a complete type.
-
-__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,
-`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".
-
-__header ` #include <boost/type_traits/has_nothrow_copy.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[endsect]
-
-[section:has_trivial_assign has_trivial_assign]
- template <class T>
- struct has_trivial_assign : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) type with a trivial assignment-operator
-then inherits from __true_type, otherwise inherits from __false_type.
-
-If a type has a trivial assignment-operator then the operator has the same effect
-as copying the bits of one object to the other:
-calls to the operator can be safely replaced with a call to `memcpy`.
-
-__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,
-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.
-
-__std_ref 12.8p11.
-
-__header ` #include <boost/type_traits/has_trivial_assign.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`has_trivial_assign<int>` inherits from `__true_type`.]
-
-[:`has_trivial_assign<char*>::type` is the type `__true_type`.]
-
-[:`has_trivial_assign<int (*)(long)>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`has_trivial_assign<MyClass>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`has_trivial_assign<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:has_trivial_constructor has_trivial_constructor]
- template <class T>
- struct has_trivial_constructor : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) type with a trivial default-constructor
-then inherits from __true_type, otherwise inherits from __false_type.
-
-If a type has a trivial default-constructor then the constructor have no effect:
-calls to the constructor can be safely omitted. Note that using meta-programming
-to omit a call to a single trivial-constructor call is of no benefit whatsoever.
-However, if loops and/or exception handling code can also be omitted, then some
-benefit in terms of code size and speed can be obtained.
-
-__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,
-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.
-
-__std_ref 12.1p6.
-
-__header ` #include <boost/type_traits/has_trivial_constructor.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`has_trivial_constructor<int>` inherits from `__true_type`.]
-
-[:`has_trivial_constructor<char*>::type` is the type `__true_type`.]
-
-[:`has_trivial_constructor<int (*)(long)>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`has_trivial_constructor<MyClass>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`has_trivial_constructor<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:has_trivial_copy has_trivial_copy]
- template <class T>
- struct has_trivial_copy : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) type with a trivial copy-constructor
-then inherits from __true_type, otherwise inherits from __false_type.
-
-If a type has a trivial copy-constructor then the constructor has the same effect
-as copying the bits of one object to the other:
-calls to the constructor can be safely replaced with a call to `memcpy`.
-
-__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,
-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.
-
-__std_ref 12.8p6.
-
-__header ` #include <boost/type_traits/has_trivial_copy.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`has_trivial_copy<int>` inherits from `__true_type`.]
-
-[:`has_trivial_copy<char*>::type` is the type `__true_type`.]
-
-[:`has_trivial_copy<int (*)(long)>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`has_trivial_copy<MyClass>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`has_trivial_copy<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:has_trivial_destructor has_trivial_destructor]
- template <class T>
- struct has_trivial_destructor : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) type with a trivial destructor
-then inherits from __true_type, otherwise inherits from __false_type.
-
-If a type has a trivial destructor then the destructor has no effect:
-calls to the destructor can be safely omitted. Note that using meta-programming
-to omit a call to a single trivial-constructor call is of no benefit whatsoever.
-However, if loops and/or exception handling code can also be omitted, then some
-benefit in terms of code size and speed can be obtained.
-
-__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,
-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.
-
-__std_ref 12.4p3.
-
-__header ` #include <boost/type_traits/has_trivial_destructor.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`has_trivial_destructor<int>` inherits from `__true_type`.]
-
-[:`has_trivial_destructor<char*>::type` is the type `__true_type`.]
-
-[:`has_trivial_destructor<int (*)(long)>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`has_trivial_destructor<MyClass>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`has_trivial_destructor<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:has_virtual_destructor has_virtual_destructor]
- template <class T>
- struct has_virtual_destructor : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) type with a virtual destructor
-then inherits from __true_type, otherwise inherits from __false_type.
-
-__compat This trait is provided for completeness, since it's part of the
-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 has the necessary __intrinsics.
-
-__std_ref 12.4.
-
-__header ` #include <boost/type_traits/has_virtual_destructor.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[endsect]
-
-[section:integral_constant integral_constant]
- template <class T, T val>
- struct integral_constant
- {
- typedef integral_constant<T, val> type;
- typedef T value_type;
- static const T value = val;
- };
-
- typedef integral_constant<bool, true> true_type;
- typedef integral_constant<bool, false> false_type;
-
-Class template `integral_constant` is the common base class for all the value-based
-type traits. The two typedef's `true_type` and `false_type` are provided for
-convenience: most of the value traits are Boolean properties and so will inherit from
-one of these.
-
-[endsect]
-
-[section:integral_promotion integral_promotion]
-
- template <class T>
- struct integral_promotion
- {
- typedef __below type;
- };
-
-__type If integral promotion can be applied to an rvalue of type `T`, then
-applies integral promotion to `T` and keeps cv-qualifiers of `T`,
-otherwise leaves `T` unchanged.
-
-__std_ref 4.5 except 4.5/3 (integral bit-field).
-
-__header ` #include <boost/type_traits/integral_promotion.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[table Examples
-
-[ [Expression] [Result Type]]
-
-[[`integral_promotion<short const>::type`][`int const`]]
-
-[[`integral_promotion<short&>::type`][`short&`]]
-
-[[`integral_promotion<enum std::float_round_style>::type`][`int`]]
-
-]
-
-[endsect]
-
-[section:is_abstract is_abstract]
- template <class T>
- struct is_abstract : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) abstract type then inherits from
-__true_type, otherwise inherits from __false_type.
-
-__std_ref 10.3.
-
-__header ` #include <boost/type_traits/is_abstract.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__compat The compiler must support DR337 (as of April 2005: GCC 3.4, VC++ 7.1 (and later),
- Intel C++ 7 (and later), and Comeau 4.3.2).
-Otherwise behaves the same as __is_polymorphic;
-this is the "safe fallback position" for which polymorphic types are always
-regarded as potentially abstract. The macro BOOST_NO_IS_ABSTRACT is used to
-signify that the implementation is buggy, users should check for this in their
-own code if the "safe fallback" is not suitable for their particular use-case.
-
-__examples
-
-[:Given: `class abc{ virtual ~abc() = 0; };` ]
-
-[:`is_abstract<abc>` inherits from `__true_type`.]
-
-[:`is_abstract<abc>::type` is the type `__true_type`.]
-
-[:`is_abstract<abc const>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_abstract<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_arithmetic is_arithmetic]
- template <class T>
- struct is_arithmetic : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) arithmetic type then inherits from
-__true_type, otherwise inherits from __false_type. Arithmetic types include
-integral and floating point types (see also __is_integral and __is_floating_point).
-
-__std_ref 3.9.1p8.
-
-__header ` #include <boost/type_traits/is_arithmetic.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_arithmetic<int>` inherits from `__true_type`.]
-
-[:`is_arithmetic<char>::type` is the type `__true_type`.]
-
-[:`is_arithmetic<double>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_arithmetic<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_array is_array]
- template <class T>
- struct is_array : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) array type then inherits from __true_type,
-otherwise inherits from __false_type.
-
-__std_ref 3.9.2 and 8.3.4.
-
-__header ` #include <boost/type_traits/is_array.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__compat If the compiler does not support
-partial-specialization of class templates, then this template
-can give the wrong result with function types.
-
-__examples
-
-[:`is_array<int[2]>` inherits from `__true_type`.]
-
-[:`is_array<char[2][3]>::type` is the type `__true_type`.]
-
-[:`is_array<double[]>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_array<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_base_of is_base_of]
- template <class Base, class Derived>
- struct is_base_of : public __tof {};
-
-__inherit If Base is base class of type Derived or if both types are the same
-then inherits from __true_type,
-otherwise inherits from __false_type.
-
-This template will detect non-public base classes, and ambiguous base classes.
-
-Note that `is_base_of<X,X>` will always inherit from __true_type. [*This is the
-case even if `X` is not a class type]. This is a change in behaviour
-from Boost-1.33 in order to track the Technical Report on C++ Library Extensions.
-
-Types `Base` and `Derived` must not be incomplete types.
-
-__std_ref 10.
-
-__header ` #include <boost/type_traits/is_base_of.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__compat If the compiler does not support partial-specialization of class templates,
-then this template can not be used with function types. There are some older compilers
-which will produce compiler errors if `Base` is a private base class of `Derived`, or if
-`Base` is an ambiguous base of `Derived`. These compilers include Borland C++, older
-versions of Sun Forte C++, Digital Mars C++, and older versions of EDG based compilers.
-
-__examples
-
-[:Given: ` class Base{}; class Derived : public Base{};` ]
-
-[:`is_base_of<Base, Derived>` inherits from `__true_type`.]
-
-[:`is_base_of<Base, Derived>::type` is the type `__true_type`.]
-
-[:`is_base_of<Base, Derived>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_base_of<Base, Derived>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_base_of<Base, Base>::value` is an integral constant
-expression that evaluates to /true/: a class is regarded as it's own base.]
-
-[:`is_base_of<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_class is_class]
- template <class T>
- struct is_class : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) class type then inherits from __true_type,
-otherwise inherits from __false_type.
-
-__std_ref 3.9.2 and 9.2.
-
-__header ` #include <boost/type_traits/is_class.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__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.
-
-__examples
-
-[:Given: `class MyClass;` then:]
-
-[:`is_class<MyClass>` inherits from `__true_type`.]
-
-[:`is_class<MyClass const>::type` is the type `__true_type`.]
-
-[:`is_class<MyClass>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_class<MyClass&>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`is_class<MyClass*>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`is_class<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_compound is_compound]
- template <class T>
- struct is_compound : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) compound type then inherits from __true_type,
-otherwise inherits from __false_type. Any type that is not a fundamental type is
-a compound type (see also __is_fundamental).
-
-__std_ref 3.9.2.
-
-__header ` #include <boost/type_traits/is_compound.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_compound<MyClass>` inherits from `__true_type`.]
-
-[:`is_compound<MyEnum>::type` is the type `__true_type`.]
-
-[:`is_compound<int*>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_compound<int&>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_compound<int>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`is_compound<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_const is_const]
- template <class T>
- struct is_const : public __tof {};
-
-__inherit If T is a (top level) const-qualified type then inherits from __true_type,
-otherwise inherits from __false_type.
-
-__std_ref 3.9.3.
-
-__header ` #include <boost/type_traits/is_const.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_const<int const>` inherits from `__true_type`.]
-
-[:`is_const<int const volatile>::type` is the type `__true_type`.]
-
-[:`is_const<int* const>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_const<int const*>::value` is an integral constant
-expression that evaluates to /false/: the const-qualifier is not
-at the top level in this case.]
-
-[:`is_const<int const&>::value` is an integral constant
-expression that evaluates to /false/: the const-qualifier is not
-at the top level in this case.]
-
-[:`is_const<int>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`is_const<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_convertible is_convertible]
- template <class From, class To>
- struct is_convertible : public __tof {};
-
-__inherit If an imaginary lvalue of type `From` is convertible to type `To` then
-inherits from __true_type, otherwise inherits from __false_type.
-
-Type From must not be an incomplete type.
-
-Type To must not be an incomplete, or function type.
-
-No types are considered to be convertible to array types or abstract-class types.
-
-This template can not detect whether a converting-constructor is `public` or not: if
-type `To` has a `private` converting constructor from type `From` then instantiating
-`is_convertible<From, To>` will produce a compiler error. For this reason `is_convertible`
-can not be used to determine whether a type has a `public` copy-constructor or not.
-
-This template will also produce compiler errors if the conversion is ambiguous,
-for example:
-
- struct A {};
- struct B : A {};
- struct C : A {};
- struct D : B, C {};
- // This produces a compiler error, the conversion is ambiguous:
- bool const y = boost::is_convertible<D*,A*>::value;
-
-__std_ref 4 and 8.5.
-
-__compat This template is currently broken with Borland C++ Builder 5 (and earlier),
-for constructor-based conversions, and for the Metrowerks 7 (and earlier)
-compiler in all cases. If the compiler does not support `__is_abstract`, then the
-template parameter `To` must not be an abstract type.
-
-__header ` #include <boost/type_traits/is_convertible.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_convertible<int, double>` inherits from `__true_type`.]
-
-[:`is_convertible<const int, double>::type` is the type `__true_type`.]
-
-[:`is_convertible<int* const, int*>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_convertible<int const*, int*>::value` is an integral constant
-expression that evaluates to /false/: the conversion would require a `const_cast`.]
-
-[:`is_convertible<int const&, long>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_convertible<int>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`is_convertible<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_empty is_empty]
- template <class T>
- struct is_empty : public __tof {};
-
-__inherit If T is an empty class type then inherits from __true_type,
-otherwise inherits from __false_type.
-
-__std_ref 10p5.
-
-__header ` #include <boost/type_traits/is_empty.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__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.
-
-Can not be used with incomplete types.
-
-Can not be used with union types, until is_union can be made to work.
-
-If the compiler does not support partial-specialization of class templates,
-then this template can not be used with abstract types.
-
-__examples
-
-[:Given: `struct empty_class {};` ]
-
-[:`is_empty<empty_class>` inherits from `__true_type`.]
-
-[:`is_empty<empty_class const>::type` is the type `__true_type`.]
-
-[:`is_empty<empty_class>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_empty<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_enum is_enum]
- template <class T>
- struct is_enum : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) enum type then inherits from __true_type,
-otherwise inherits from __false_type.
-
-__std_ref 3.9.2 and 7.2.
-
-__header ` #include <boost/type_traits/is_enum.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__compat Requires a correctly functioning __is_convertible template;
- this means that is_enum is currently broken under Borland C++ Builder 5,
- and for the Metrowerks compiler prior to version 8, other compilers
- should handle this template just fine.
-
-__examples
-
-[:Given: `enum my_enum { one, two };` ]
-
-[:`is_enum<my_enum>` inherits from `__true_type`.]
-
-[:`is_enum<my_enum const>::type` is the type `__true_type`.]
-
-[:`is_enum<my_enum>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_enum<my_enum&>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`is_enum<my_enum*>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`is_enum<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_floating_point is_floating_point]
- template <class T>
- struct is_floating_point : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) floating point type then inherits from __true_type,
-otherwise inherits from __false_type.
-
-__std_ref 3.9.1p8.
-
-__header ` #include <boost/type_traits/is_floating_point.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_floating_point<float>` inherits from `__true_type`.]
-
-[:`is_floating_point<double>::type` is the type `__true_type`.]
-
-[:`is_floating_point<long double>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_floating_point<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_function is_function]
-
- template <class T>
- struct is_function : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) function type then inherits from __true_type,
-otherwise inherits from __false_type. Note that this template does not detect /pointers
-to functions/, or /references to functions/, these are detected by __is_pointer and
-__is_reference respectively:
-
- typedef int f1(); // f1 is of function type.
- typedef int (f2*)(); // f2 is a pointer to a function.
- typedef int (f3&)(); // f3 is a reference to a function.
-
-__std_ref 3.9.2p1 and 8.3.5.
-
-__header ` #include <boost/type_traits/is_function.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_function<int (void)>` inherits from `__true_type`.]
-
-[:`is_function<long (double, int)>::type` is the type `__true_type`.]
-
-[:`is_function<long (double, int)>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_function<long (*)(double, int)>::value` is an integral constant
-expression that evaluates to /false/: the argument in this case is a pointer type,
-not a function type.]
-
-[:`is_function<long (&)(double, int)>::value` is an integral constant
-expression that evaluates to /false/: the argument in this case is a
-reference to a function, not a function type.]
-
-[:`is_function<long (MyClass::*)(double, int)>::value` is an integral constant
-expression that evaluates to /false/: the argument in this case is a pointer
-to a member function.]
-
-[:`is_function<T>::value_type` is the type `bool`.]
-
-[tip Don't confuse function-types with pointers to functions:\n\n
-`typedef int f(double);`\n\n
-defines a function type,\n\n
-`f foo;`\n\n
-declares a prototype for a function of type `f`,\n\n
-`f* pf = foo;`\n
-`f& fr = foo;`\n\n
-declares a pointer and a reference to the function `foo`.\n\n
-If you want to detect whether some type is a pointer-to-function then use:\n\n
-`__is_function<__remove_pointer<T>::type>::value && __is_pointer<T>::value`\n\n
-or for pointers to member functions you can just use __is_member_function_pointer directly.]
-
-[endsect]
-
-[section:is_fundamental is_fundamental]
- template <class T>
- struct is_fundamental : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) fundamental type then inherits from __true_type,
-otherwise inherits from __false_type. Fundamental types include integral, floating
-point and void types (see also __is_integral, __is_floating_point and __is_void)
-
-__std_ref 3.9.1.
-
-__header ` #include <boost/type_traits/is_fundamental.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_fundamental<int)>` inherits from `__true_type`.]
-
-[:`is_fundamental<double const>::type` is the type `__true_type`.]
-
-[:`is_fundamental<void>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_fundamental<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_integral is_integral]
- template <class T>
- struct is_integral : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) integral type then inherits from __true_type,
-otherwise inherits from __false_type.
-
-__std_ref 3.9.1p7.
-
-__header ` #include <boost/type_traits/is_integral.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_integral<int>` inherits from `__true_type`.]
-
-[:`is_integral<const char>::type` is the type `__true_type`.]
-
-[:`is_integral<long>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_integral<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_member_function_pointer is_member_function_pointer]
- template <class T>
- struct is_member_function_pointer : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) pointer to a member function
-then inherits from __true_type,
-otherwise inherits from __false_type.
-
-__std_ref 3.9.2 and 8.3.3.
-
-__header ` #include <boost/type_traits/is_member_function_pointer.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_member_function_pointer<int (MyClass::*)(void)>` inherits from `__true_type`.]
-
-[:`is_member_function_pointer<int (MyClass::*)(char)>::type` is the type `__true_type`.]
-
-[:`is_member_function_pointer<int (MyClass::*)(void)const>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_member_function_pointer<int (MyClass::*)>::value` is an integral constant
-expression that evaluates to /false/: the argument in this case is a pointer to
-a data member and not a member function, see __is_member_object_pointer
-and __is_member_pointer]
-
-[:`is_member_function_pointer<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_member_object_pointer is_member_object_pointer]
- template <class T>
- struct is_member_object_pointer : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) pointer to a member object (a data member)
-then inherits from __true_type,
-otherwise inherits from __false_type.
-
-__std_ref 3.9.2 and 8.3.3.
-
-__header ` #include <boost/type_traits/is_member_object_pointer.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_member_object_pointer<int (MyClass::*)>` inherits from `__true_type`.]
-
-[:`is_member_object_pointer<double (MyClass::*)>::type` is the type `__true_type`.]
-
-[:`is_member_object_pointer<const int (MyClass::*)>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_member_object_pointer<int (MyClass::*)(void)>::value` is an integral constant
-expression that evaluates to /false/: the argument in this case is a pointer to
-a member function and not a member object, see __is_member_function_pointer
-and __is_member_pointer]
-
-[:`is_member_object_pointer<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_member_pointer is_member_pointer]
- template <class T>
- struct is_member_pointer : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) pointer to a member (either a function
-or a data member)
-then inherits from __true_type,
-otherwise inherits from __false_type.
-
-__std_ref 3.9.2 and 8.3.3.
-
-__header ` #include <boost/type_traits/is_member_pointer.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_member_pointer<int (MyClass::*)>` inherits from `__true_type`.]
-
-[:`is_member_pointer<int (MyClass::*)(char)>::type` is the type `__true_type`.]
-
-[:`is_member_pointer<int (MyClass::*)(void)const>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_member_pointer<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_object is_object]
- template <class T>
- struct is_object : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) object type
-then inherits from __true_type,
-otherwise inherits from __false_type. All types are object types except
-references, void, and function types.
-
-__std_ref 3.9p9.
-
-__header ` #include <boost/type_traits/is_object.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_object<int>` inherits from `__true_type`.]
-
-[:`is_object<int*>::type` is the type `__true_type`.]
-
-[:`is_object<int (*)(void)>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_object<int (MyClass::*)(void)const>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_object<int &>::value` is an integral constant
-expression that evaluates to /false/: reference types are not objects]
-
-[:`is_object<int (double)>::value` is an integral constant
-expression that evaluates to /false/: function types are not objects]
-
-[:`is_object<const void>::value` is an integral constant
-expression that evaluates to /false/: void is not an object type]
-
-[:`is_object<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_pod is_pod]
- template <class T>
- struct is_pod : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) POD type then inherits from __true_type,
-otherwise inherits from __false_type.
-
-POD stands for "Plain old data".
-Arithmetic types, and enumeration types,
-a pointers and pointer to members are all PODs. Classes and unions can also
-be POD's if they have no non-static data members that are of reference or
-non-POD type, no user defined constructors, no user defined assignment
-operators, no private or protected non-static data members,
-no virtual functions and no base classes. Finally, a cv-qualified POD is
-still a POD, as is an array of PODs.
-
-__std_ref 3.9p10 and 9p4 (Note that POD's are also aggregates, see 8.5.1).
-
-__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, 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.
-
-__header ` #include <boost/type_traits/is_pod.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_pod<int>` inherits from `__true_type`.]
-
-[:`is_pod<char*>::type` is the type `__true_type`.]
-
-[:`is_pod<int (*)(long)>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_pod<MyClass>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`is_pod<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_pointer is_pointer]
- template <class T>
- struct is_pointer : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) pointer type (includes function pointers,
-but excludes pointers to members) then inherits from __true_type,
-otherwise inherits from __false_type.
-
-__std_ref 3.9.2p2 and 8.3.1.
-
-__header ` #include <boost/type_traits/is_pointer.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_pointer<int*>` inherits from `__true_type`.]
-
-[:`is_pointer<char* const>::type` is the type `__true_type`.]
-
-[:`is_pointer<int (*)(long)>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_pointer<int (MyClass::*)(long)>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`is_pointer<int (MyClass::*)>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`is_pointer<T>::value_type` is the type `bool`.]
-
-[important `is_pointer` detects "real" pointer types only, and /not/ smart pointers.
-Users should not specialise `is_pointer` for smart pointer types, as doing so may cause
-Boost (and other third party) code to fail to function correctly.
-Users wanting a trait to detect smart pointers should create their own.
-However, note that there is no way in general to auto-magically detect smart pointer types,
-so such a trait would have to be partially specialised for each supported smart pointer type.]
-
-[endsect]
-
-[section:is_polymorphic is_polymorphic]
- template <class T>
- struct is_polymorphic : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) polymorphic type
-then inherits from __true_type,
-otherwise inherits from __false_type. Type `T` must be a complete type.
-
-__std_ref 10.3.
-
-__compat The implementation requires some knowledge of the compilers ABI,
-it does actually seem to work with the majority of compilers though.
-
-__header ` #include <boost/type_traits/is_polymorphic.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[: Given: `class poly{ virtual ~poly(); };` ]
-
-[:`is_polymorphic<poly>` inherits from `__true_type`.]
-
-[:`is_polymorphic<poly const>::type` is the type `__true_type`.]
-
-[:`is_polymorphic<poly>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_polymorphic<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_same is_same]
- template <class T, class U>
- struct is_same : public __tof {};
-
-__inherit If T and U are the same types then inherits from
-__true_type, otherwise inherits from __false_type.
-
-__header ` #include <boost/type_traits/is_same.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__compat If the compiler does not support partial-specialization of class templates,
-then this template can not be used with abstract, incomplete or function types.
-
-__examples
-
-[:`is_same<int, int>` inherits from `__true_type`.]
-
-[:`is_same<int, int>::type` is the type `__true_type`.]
-
-[:`is_same<int, int>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_same<int const, int>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`is_same<int&, int>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`is_same<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_scalar is_scalar]
- template <class T>
- struct is_scalar : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) scalar type then inherits from
-__true_type, otherwise inherits from __false_type. Scalar types include
-integral, floating point, enumeration, pointer, and pointer-to-member types.
-
-__std_ref 3.9p10.
-
-__header ` #include <boost/type_traits/is_scalar.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__compat If the compiler does not support partial-specialization of class templates,
-then this template can not be used with function types.
-
-__examples
-
-[:`is_scalar<int*>` inherits from `__true_type`.]
-
-[:`is_scalar<int>::type` is the type `__true_type`.]
-
-[:`is_scalar<double>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_scalar<int (*)(long)>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_scalar<int (MyClass::*)(long)>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_scalar<int (MyClass::*)>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_scalar<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_stateless is_stateless]
- template <class T>
- struct is_stateless : public __tof {};
-
-__inherit Ff T is a stateless type then inherits from __true_type, otherwise
-from __false_type.
-
-Type T must be a complete type.
-
-A stateless type is a type that has no storage and whose constructors and
-destructors are trivial. That means that `is_stateless` only inherits from
-__true_type if the following expression is `true`:
-
- ::boost::has_trivial_constructor<T>::value
- && ::boost::has_trivial_copy<T>::value
- && ::boost::has_trivial_destructor<T>::value
- && ::boost::is_class<T>::value
- && ::boost::is_empty<T>::value
-
-__std_ref 3.9p10.
-
-__header ` #include <boost/type_traits/is_stateless.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__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, 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.
-
-[endsect]
-
-[section:is_reference is_reference]
- template <class T>
- struct is_reference : public __tof {};
-
-__inherit If T is a reference pointer type then inherits from __true_type,
-otherwise inherits from __false_type.
-
-__std_ref 3.9.2 and 8.3.2.
-
-__compat If the compiler does not
-support partial-specialization of class templates,
-then this template may report the wrong result for function types,
-and for types that are both const and volatile qualified.
-
-__header ` #include <boost/type_traits/is_reference.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_reference<int&>` inherits from `__true_type`.]
-
-[:`is_reference<int const&>::type` is the type `__true_type`.]
-
-[:`is_reference<int (&)(long)>::value` is an integral constant
-expression that evaluates to /true/ (the argument in this case is
-a reference to a function).]
-
-[:`is_reference<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_union is_union]
- template <class T>
- struct is_union : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) union type then inherits from __true_type,
-otherwise inherits from __false_type. Currently requires some kind of compiler
-support, otherwise unions are identified as classes.
-
-__std_ref 3.9.2 and 9.5.
-
-__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.
-
-__header ` #include <boost/type_traits/is_union.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_union<void>` inherits from `__true_type`.]
-
-[:`is_union<const void>::type` is the type `__true_type`.]
-
-[:`is_union<void>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_union<void*>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`is_union<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_void is_void]
- template <class T>
- struct is_void : public __tof {};
-
-__inherit If T is a (possibly cv-qualified) void type then inherits from __true_type,
-otherwise inherits from __false_type.
-
-__std_ref 3.9.1p9.
-
-__header ` #include <boost/type_traits/is_void.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_void<void>` inherits from `__true_type`.]
-
-[:`is_void<const void>::type` is the type `__true_type`.]
-
-[:`is_void<void>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_void<void*>::value` is an integral constant
-expression that evaluates to /false/.]
-
-[:`is_void<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:is_volatile is_volatile]
- template <class T>
- struct is_volatile : public __tof {};
-
-__inherit If T is a (top level) volatile-qualified type then inherits from __true_type,
-otherwise inherits from __false_type.
-
-__std_ref 3.9.3.
-
-__header ` #include <boost/type_traits/is_volatile.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`is_volatile<volatile int>` inherits from `__true_type`.]
-
-[:`is_volatile<const volatile int>::type` is the type `__true_type`.]
-
-[:`is_volatile<int* volatile>::value` is an integral constant
-expression that evaluates to /true/.]
-
-[:`is_volatile<int volatile*>::value` is an integral constant
-expression that evaluates to /false/: the volatile qualifier is not
-at the top level in this case.]
-
-[:`is_volatile<T>::value_type` is the type `bool`.]
-
-[endsect]
-
-[section:promote promote]
-
- template <class T>
- struct promote
- {
- typedef __below type;
- };
-
-__type If integral or floating point promotion can be applied to an rvalue
-of type `T`, then applies integral and floating point promotions to `T` and
-keeps cv-qualifiers of `T`, otherwise leaves `T` unchanged. See also
-__integral_promotion and __floating_point_promotion.
-
-__std_ref 4.5 except 4.5/3 (integral bit-field) and 4.6.
-
-__header ` #include <boost/type_traits/promote.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[table Examples
-
-[ [Expression] [Result Type]]
-
-[[`promote<short volatile>::type`][`int volatile`]]
-
-[[`promote<float const>::type`][`double const`]]
-
-[[`promote<short&>::type`][`short&`]]
-
-]
-
-[endsect]
-
-[section:rank rank]
- template <class T>
- struct rank : public __integral_constant<std::size_t, RANK(T)> {};
-
-__inherit Class template rank inherits from `__integral_constant<std::size_t, RANK(T)>`,
-where `RANK(T)` is the number of array dimensions in type `T`.
-
-If `T` is not an array type, then `RANK(T)` is zero.
-
-__header ` #include <boost/type_traits/rank.hpp>` or ` #include <boost/type_traits.hpp>`
-
-__examples
-
-[:`rank<int[]>` inherits from `__integral_constant<std::size_t, 1>`.]
-
-[:`rank<double[2][3][4]>::type` is the type `__integral_constant<std::size_t, 3>`.]
-
-[:`rank<int[1]>::value` is an integral constant
-expression that evaluates to /1/.]
-
-[:`rank<int[][2]>::value` is an integral constant
-expression that evaluates to /2/.]
-
-[:`rank<int*>::value` is an integral constant
-expression that evaluates to /0/.]
-
-[:`rank<T>::value_type` is the type `std::size_t`.]
-
-[endsect]
-
-[section:remove_all_extents remove_all_extents]
-
- template <class T>
- struct remove_all_extents
- {
- typedef __below type;
- };
-
-__type If `T` is an array type, then removes all of the array bounds on `T`, otherwise
-leaves `T` unchanged.
-
-__std_ref 8.3.4.
-
-__compat If the compiler does not support partial specialization of class-templates
-then this template will compile, but the member `type` will always be the same as
-type `T` except where __transform_workaround have been applied.
-
-__header ` #include <boost/type_traits/remove_all_extents.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[table Examples
-
-[ [Expression] [Result Type]]
-
-[[`remove_all_extents<int>::type`][`int`]]
-
-[[`remove_all_extents<int const[2]>::type`] [`int const`]]
-
-[[`remove_all_extents<int[][2]>::type`] [`int`]]
-
-[[`remove_all_extents<int[2][3][4]>::type`] [`int`]]
-
-[[`remove_all_extents<int const*>::type`] [`int const*`]]
-
-]
-
-[endsect]
-
-[section:remove_const remove_const]
-
- template <class T>
- struct remove_const
- {
- typedef __below type;
- };
-
-__type The same type as `T`, but with any /top level/ const-qualifier removed.
-
-__std_ref 3.9.3.
-
-__compat If the compiler does not support partial specialization of class-templates
-then this template will compile, but the member `type` will always be the same as
-type `T` except where __transform_workaround have been applied.
-
-__header ` #include <boost/type_traits/remove_const.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[table Examples
-
-[ [Expression] [Result Type]]
-
-[[`remove_const<int>::type`][`int`]]
-
-[[`remove_const<int const>::type`] [`int`]]
-
-[[`remove_const<int const volatile>::type`] [`int volatile`]]
-
-[[`remove_const<int const&>::type`] [`int const&`]]
-
-[[`remove_const<int const*>::type`] [`int const*`]]
-
-]
-
-[endsect]
-
-[section:remove_cv remove_cv]
-
- template <class T>
- struct remove_cv
- {
- typedef __below type;
- };
-
-__type The same type as `T`, but with any /top level/ cv-qualifiers removed.
-
-__std_ref 3.9.3.
-
-__compat If the compiler does not support partial specialization of class-templates
-then this template will compile, but the member `type` will always be the same as
-type `T` except where __transform_workaround have been applied.
-
-__header ` #include <boost/type_traits/remove_cv.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[table Examples
-
-[ [Expression] [Result Type]]
-
-[[`remove_cv<int>::type`][`int`]]
-
-[[`remove_cv<int const>::type`] [`int`]]
-
-[[`remove_cv<int const volatile>::type`] [`int`]]
-
-[[`remove_cv<int const&>::type`] [`int const&`]]
-
-[[`remove_cv<int const*>::type`] [`int const*`]]
-
-]
-
-[endsect]
-
-[section:remove_extent remove_extent]
-
- template <class T>
- struct remove_extent
- {
- typedef __below type;
- };
-
-__type If `T` is an array type, then removes the topmost array bound,
-otherwise leaves `T` unchanged.
-
-__std_ref 8.3.4.
-
-__compat If the compiler does not support partial specialization of class-templates
-then this template will compile, but the member `type` will always be the same as
-type `T` except where __transform_workaround have been applied.
-
-__header ` #include <boost/type_traits/remove_extent.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[table Examples
-
-[ [Expression] [Result Type]]
-
-[[`remove_extent<int>::type`][`int`]]
-
-[[`remove_extent<int const[2]>::type`] [`int const`]]
-
-[[`remove_extent<int[2][4]>::type`] [`int[4]`]]
-
-[[`remove_extent<int[][2]>::type`] [`int[2]`]]
-
-[[`remove_extent<int const*>::type`] [`int const*`]]
-
-]
-
-[endsect]
-
-[section:remove_pointer remove_pointer]
-
- template <class T>
- struct remove_pointer
- {
- typedef __below type;
- };
-
-__type The same type as `T`, but with any pointer modifier removed.
-
-__std_ref 8.3.1.
-
-__compat If the compiler does not support partial specialization of class-templates
-then this template will compile, but the member `type` will always be the same as
-type `T` except where __transform_workaround have been applied.
-
-__header ` #include <boost/type_traits/remove_pointer.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[table Examples
-
-[ [Expression] [Result Type]]
-
-[[`remove_pointer<int>::type`][`int`]]
-
-[[`remove_pointer<int const*>::type`] [`int const`]]
-
-[[`remove_pointer<int const**>::type`] [`int const*`]]
-
-[[`remove_pointer<int&>::type`] [`int&`]]
-
-[[`remove_pointer<int*&>::type`] [`int*&`]]
-
-]
-
-[endsect]
-
-[section:remove_reference remove_reference]
-
- template <class T>
- struct remove_reference
- {
- typedef __below type;
- };
-
-__type The same type as `T`, but with any reference modifier removed.
-
-__std_ref 8.3.2.
-
-__compat If the compiler does not support partial specialization of class-templates
-then this template will compile, but the member `type` will always be the same as
-type `T` except where __transform_workaround have been applied.
-
-__header ` #include <boost/type_traits/remove_reference.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[table Examples
-
-[ [Expression] [Result Type]]
-
-[[`remove_reference<int>::type`][`int`]]
-
-[[`remove_reference<int const&>::type`] [`int const`]]
-
-[[`remove_reference<int*>::type`] [`int*`]]
-
-[[`remove_reference<int*&>::type`] [`int*`]]
-
-]
-
-[endsect]
-
-[section:remove_volatile remove_volatile]
-
- template <class T>
- struct remove_volatile
- {
- typedef __below type;
- };
-
-__type The same type as `T`, but with any /top level/ volatile-qualifier removed.
-
-__std_ref 3.9.3.
-
-__compat If the compiler does not support partial specialization of class-templates
-then this template will compile, but the member `type` will always be the same as
-type `T` except where __transform_workaround have been applied.
-
-__header ` #include <boost/type_traits/remove_volatile.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[table Examples
-
-[ [Expression] [Result Type]]
-
-[[`remove_volatile<int>::type`][`int`]]
-
-[[`remove_volatile<int volatile>::type`] [`int`]]
-
-[[`remove_volatile<int const volatile>::type`] [`int const`]]
-
-[[`remove_volatile<int volatile&>::type`] [`int const&`]]
-
-[[`remove_volatile<int volatile*>::type`] [`int const*`]]
-
-]
-
-[endsect]
-
-[section:type_with_alignment type_with_alignment]
-
- template <std::size_t Align>
- struct type_with_alignment
- {
- typedef __below type;
- };
-
-__type a built-in or POD type with an alignment
-that is a multiple of `Align`.
-
-__header ` #include <boost/type_traits/type_with_alignment.hpp>` or ` #include <boost/type_traits.hpp>`
-
-[endsect]
-
-[endsect]
-
-[section:credits Credits]
-
-This documentation was pulled together by John Maddock, using
-[@../../tools/quickbook/doc/html/index.html Boost.Quickbook]
-and [@boostbook.html Boost.DocBook].
-
-The original version of this library was created by Steve Cleary,
-Beman Dawes, Howard Hinnant, and John Maddock. John Maddock is the
-current maintainer of the library.
-
-This version of type traits library is based on contributions by
-Adobe Systems Inc, David Abrahams, Steve Cleary,
-Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat Marcus,
-Itay Maman, John Maddock, Thorsten Ottosen, Robert Ramey and Jeremy Siek.
-
-Mat Marcus and Jesse Jones invented, and
-[@http://opensource.adobe.com/project4/project.shtml published a paper describing],
-the partial specialization workarounds used in this library.
-
-Aleksey Gurtovoy added MPL integration to the library.
-
-The __is_convertible template is based on code originally devised by
-Andrei Alexandrescu, see
-"[@http://www.cuj.com/experts/1810/alexandr.htm?topic=experts
-Generic<Programming>: Mappings between Types and Values]".
-
-The latest version of this library and documentation can be found at
-[@http://www.boost.org www.boost.org]. Bugs, suggestions and discussion
-should be directed to boost_at_[hidden]
-(see [@http://www.boost.org/more/mailing_lists.htm#main
-www.boost.org/more/mailing_lists.htm#main] for subscription details).
+[include add_const.qbk]
+[include add_cv.qbk]
+[include add_pointer.qbk]
+[include add_reference.qbk]
+[include add_volatile.qbk]
+[include aligned_storage.qbk]
+[include alignment_of.qbk]
+[include decay.qbk]
+[include extent.qbk]
+[include floating_point_promotion.qbk]
+[include function_traits.qbk]
+
+[include has_nothrow_assign.qbk]
+[include has_nothrow_constructor.qbk]
+[include has_nothrow_copy.qbk]
+[section:has_nothrow_cp_cons has_nothrow_copy_constructor]
+See __has_nothrow_copy.
+[endsect]
+[section:has_no_throw_def_cons has_nothrow_default_constructor]
+See __has_nothrow_constructor.
+[endsect]
+[include has_trivial_assign.qbk]
+[include has_trivial_constructor.qbk]
+[include has_trivial_copy.qbk]
+[section:has_trivial_cp_cons has_trivial_copy_constructor]
+See __has_trivial_copy.
+[endsect]
+[section:has_trivial_def_cons has_trivial_default_constructor]
+See __has_trivial_constructor.
+[endsect]
+[include has_trivial_destructor.qbk]
+[include has_virtual_destructor.qbk]
+
+[include integral_constant.qbk]
+[include integral_promotion.qbk]
+
+[include is_abstract.qbk]
+[include is_arithmetic.qbk]
+[include is_array.qbk]
+[include is_base_of.qbk]
+[include is_class.qbk]
+[include is_complex.qbk]
+[include is_compound.qbk]
+[include is_const.qbk]
+[include is_convertible.qbk]
+[include is_empty.qbk]
+[include is_enum.qbk]
+[include is_floating_point.qbk]
+[include is_function.qbk]
+[include is_fundamental.qbk]
+[include is_integral.qbk]
+[include is_member_function_pointer.qbk]
+[include is_member_object_pointer.qbk]
+[include is_member_pointer.qbk]
+[include is_object.qbk]
+[include is_pod.qbk]
+[include is_pointer.qbk]
+[include is_polymorphic.qbk]
+[include is_same.qbk]
+[include is_scalar.qbk]
+[include is_signed.qbk]
+[include is_stateless.qbk]
+[include is_reference.qbk]
+[include is_union.qbk]
+[include is_unsigned.qbk]
+[include is_void.qbk]
+[include is_volatile.qbk]
+
+[include make_signed.qbk]
+[include make_unsigned.qbk]
+
+[include promote.qbk]
+[include rank.qbk]
+
+[include remove_all_extents.qbk]
+[include remove_const.qbk]
+[include remove_cv.qbk]
+[include remove_extent.qbk]
+[include remove_pointer.qbk]
+[include remove_reference.qbk]
+[include remove_volatile.qbk]
+[include type_with_alignment.qbk]
 
 [endsect]
 
+[include credits.qbk]
 
 
 

Added: trunk/libs/type_traits/doc/type_with_alignment.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/type_with_alignment.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,14 @@
+[section:type_with_alignment type_with_alignment]
+
+ template <std::size_t Align>
+ struct type_with_alignment
+ {
+ typedef __below type;
+ };
+
+__type a built-in or POD type with an alignment
+that is a multiple of `Align`.
+
+__header ` #include <boost/type_traits/type_with_alignment.hpp>` or ` #include <boost/type_traits.hpp>`
+
+[endsect]

Added: trunk/libs/type_traits/doc/user_defined.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/user_defined.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,35 @@
+[section:user_defined User Defined Specializations]
+
+Occationally the end user may need to provide their own specialization
+for one of the type traits - typically where intrinsic compiler support
+is required to implement a specific trait fully.
+These specializations should derive from boost::__true_type or boost::__false_type
+as appropriate:
+
+ #include <boost/type_traits/is_pod.hpp>
+ #include <boost/type_traits/is_class.hpp>
+ #include <boost/type_traits/is_union.hpp>
+
+ struct my_pod{};
+ struct my_union
+ {
+ char c;
+ int i;
+ };
+
+ namespace boost
+ {
+ template<>
+ struct __is_pod<my_pod> : public __true_type{};
+
+ template<>
+ struct __is_pod<my_union> : public __true_type{};
+
+ template<>
+ struct __is_union<my_union> : public __true_type{};
+
+ template<>
+ struct __is_class<my_union> : public __false_type{};
+ }
+
+[endsect]

Added: trunk/libs/type_traits/doc/value_traits.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/doc/value_traits.qbk 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,187 @@
+[section:value_traits Type Traits that Describe the Properties of a Type]
+
+These traits are all /value traits/, which is to say the traits classes all
+inherit from __integral_constant, and are used to access some numerical
+property of a type. Often this is a simple true or false Boolean value,
+but in a few cases may be some other integer value (for example when dealing
+with type alignments, or array bounds: see `__alignment_of`, `__rank` and `__extent`).
+
+[section:primary Categorizing a Type]
+
+These traits identify what "kind" of type some type `T` is. These are split into
+two groups: primary traits which are all mutually exclusive, and composite traits
+that are compositions of one or more primary traits.
+
+For any given type, exactly one primary type trait will inherit from
+__true_type, and all the others will inherit from __false_type, in other
+words these traits are mutually exclusive.
+
+This means that `__is_integral<T>::value` and `__is_floating_point<T>::value`
+will only ever be true for built-in types; if you want to check for a
+user-defined class type that behaves "as if" it is an integral or floating point type,
+then use the `std::numeric_limits template` instead.
+
+[*Synopsis:]
+
+ template <class T>
+ struct __is_array<T>;
+
+ template <class T>
+ struct __is_class<T>;
+
+ template <class T>
+ struct __is_complex<T>;
+
+ template <class T>
+ struct __is_enum<T>;
+
+ template <class T>
+ struct __is_floating_point<T>;
+
+ template <class T>
+ struct __is_function<T>;
+
+ template <class T>
+ struct __is_integral<T>;
+
+ template <class T>
+ struct __is_member_function_pointer<T>;
+
+ template <class T>
+ struct __is_member_object_pointer<T>;
+
+ template <class T>
+ struct __is_pointer<T>;
+
+ template <class T>
+ struct __is_reference<T>;
+
+ template <class T>
+ struct __is_union<T>;
+
+ template <class T>
+ struct __is_void<T>;
+
+The following traits are made up of the union of one or more type
+categorizations. A type may belong to more than one of these categories,
+in addition to one of the primary categories.
+
+ template <class T>
+ struct __is_arithmetic;
+
+ template <class T>
+ struct __is_compound;
+
+ template <class T>
+ struct __is_fundamental;
+
+ template <class T>
+ struct __is_member_pointer;
+
+ template <class T>
+ struct __is_object;
+
+ template <class T>
+ struct __is_scalar;
+
+[endsect]
+
+[section:properties General Type Properties]
+
+The following templates describe the general properties of a type.
+
+[*Synopsis:]
+
+ template <class T>
+ struct __alignment_of;
+
+ template <class T>
+ struct __has_nothrow_assign;
+
+ template <class T>
+ struct __has_nothrow_constructor;
+
+ template <class T>
+ struct __has_nothrow_default_constructor;
+
+ template <class T>
+ struct __has_nothrow_copy;
+
+ template <class T>
+ struct __has_nothrow_copy_constructor;
+
+ template <class T>
+ struct __has_trivial_assign;
+
+ template <class T>
+ struct __has_trivial_constructor;
+
+ template <class T>
+ struct __has_trivial_default_constructor;
+
+ template <class T>
+ struct __has_trivial_copy;
+
+ template <class T>
+ struct __has_trivial_copy_constructor;
+
+ template <class T>
+ struct __has_trivial_destructor;
+
+ template <class T>
+ struct __has_virtual_destructor;
+
+ template <class T>
+ struct __is_abstract;
+
+ template <class T>
+ struct __is_const;
+
+ template <class T>
+ struct __is_empty;
+
+ template <class T>
+ struct __is_stateless;
+
+ template <class T>
+ struct __is_pod;
+
+ template <class T>
+ struct __is_polymorphic;
+
+ template <class T>
+ struct __is_signed;
+
+ template <class T>
+ struct __is_unsigned;
+
+ template <class T>
+ struct __is_volatile;
+
+ template <class T, std::size_t N = 0>
+ struct __extent;
+
+ template <class T>
+ struct __rank;
+
+[endsect]
+
+[section:relate Relationships Between Two Types]
+
+These templates determine the whether there is a relationship
+between two types:
+
+[*Synopsis:]
+
+ template <class Base, class Derived>
+ struct __is_base_of;
+
+ template <class From, class To>
+ struct __is_convertible;
+
+ template <class T, class U>
+ struct __is_same;
+
+[endsect]
+
+[endsect]
\ No newline at end of file

Modified: trunk/libs/type_traits/index.html
==============================================================================
--- trunk/libs/type_traits/index.html (original)
+++ trunk/libs/type_traits/index.html 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -1,13 +1,11 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
   <head>
- <meta http-equiv="refresh" content="0; URL=../../doc/html/boost_typetraits.html">
+ <meta http-equiv="refresh" content="0; URL=doc/html/index.html">
   </head>
   <body>
- Automatic redirection failed, please go to
- ../../doc/html/boost_typetraits.html
- or view the online version at
- http://www.boost.org/regression-logs/cs-win32_metacomm/doc/html/boost_typetraits.html
+ <P>Automatic redirection failed, please go to
+ doc/html/index.html.</P>
       <P>Copyright&nbsp;John Maddock 2001</P>
       <P>Distributed under the Boost Software License, Version 1.0. (See accompanying file <A href="../../LICENSE_1_0.txt">
             LICENSE_1_0.txt</A> or copy at www.boost.org/LICENSE_1_0.txt).</P>
@@ -17,3 +15,5 @@
 
 
 
+
+

Added: trunk/libs/type_traits/test/is_complex_test.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/test/is_complex_test.cpp 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,45 @@
+
+// (C) Copyright John Maddock 2007.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#include "test.hpp"
+#include "check_integral_constant.hpp"
+#ifdef TEST_STD
+# include <type_traits>
+#else
+# include <boost/type_traits/is_complex.hpp>
+#endif
+#include <iostream>
+
+struct bad_struct
+{
+ operator std::complex<double> ()const;
+};
+
+struct derived_complex : public std::complex<double>
+{
+};
+
+TT_TEST_BEGIN(is_complex)
+
+ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_complex<int>::value, false);
+ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_complex<double>::value, false);
+ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_complex<float>::value, false);
+ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_complex<bad_struct>::value, false);
+ //BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_complex<derived_complex>::value, false);
+ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_complex<std::complex<long double> >::value, true);
+ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_complex<std::complex<double> >::value, true);
+ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_complex<std::complex<float> >::value, true);
+
+TT_TEST_END
+
+
+
+
+
+
+
+
+

Added: trunk/libs/type_traits/test/make_signed_test.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/test/make_signed_test.cpp 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,107 @@
+
+// (C) Copyright John Maddock 2007.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.tt.org/LICENSE_1_0.txt)
+
+#include "test.hpp"
+#include "check_type.hpp"
+#include "check_integral_constant.hpp"
+#ifdef TEST_STD
+# include <type_traits>
+#else
+# include <boost/type_traits/make_signed.hpp>
+#endif
+
+TT_TEST_BEGIN(make_signed)
+// signed types:
+BOOST_CHECK_TYPE(::tt::make_signed<signed char>::type, signed char);
+BOOST_CHECK_TYPE(::tt::make_signed<short>::type, short);
+BOOST_CHECK_TYPE(::tt::make_signed<int>::type, int);
+BOOST_CHECK_TYPE(::tt::make_signed<long>::type, long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_signed<long long>::type, long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_signed<__int64>::type, __int64);
+#endif
+// const signed types:
+BOOST_CHECK_TYPE(::tt::make_signed<const signed char>::type, const signed char);
+BOOST_CHECK_TYPE(::tt::make_signed<const short>::type, const short);
+BOOST_CHECK_TYPE(::tt::make_signed<const int>::type, const int);
+BOOST_CHECK_TYPE(::tt::make_signed<const long>::type, const long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_signed<const long long>::type, const long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_signed<const __int64>::type, const __int64);
+#endif
+// volatile signed types:
+BOOST_CHECK_TYPE(::tt::make_signed<volatile signed char>::type, volatile signed char);
+BOOST_CHECK_TYPE(::tt::make_signed<volatile short>::type, volatile short);
+BOOST_CHECK_TYPE(::tt::make_signed<volatile int>::type, volatile int);
+BOOST_CHECK_TYPE(::tt::make_signed<volatile long>::type, volatile long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_signed<volatile long long>::type, volatile long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_signed<volatile __int64>::type, volatile __int64);
+#endif
+// const volatile signed types:
+BOOST_CHECK_TYPE(::tt::make_signed<const volatile signed char>::type, const volatile signed char);
+BOOST_CHECK_TYPE(::tt::make_signed<const volatile short>::type, const volatile short);
+BOOST_CHECK_TYPE(::tt::make_signed<const volatile int>::type, const volatile int);
+BOOST_CHECK_TYPE(::tt::make_signed<const volatile long>::type, const volatile long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_signed<const volatile long long>::type, const volatile long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_signed<const volatile __int64>::type, const volatile __int64);
+#endif
+
+// unsigned types:
+BOOST_CHECK_TYPE(::tt::make_signed<unsigned char>::type, signed char);
+BOOST_CHECK_TYPE(::tt::make_signed<unsigned short>::type, short);
+BOOST_CHECK_TYPE(::tt::make_signed<unsigned int>::type, int);
+BOOST_CHECK_TYPE(::tt::make_signed<unsigned long>::type, long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_signed<unsigned long long>::type, long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_signed<unsigned __int64>::type, __int64);
+#endif
+// const unsigned types:
+BOOST_CHECK_TYPE(::tt::make_signed<const unsigned char>::type, const signed char);
+BOOST_CHECK_TYPE(::tt::make_signed<const unsigned short>::type, const short);
+BOOST_CHECK_TYPE(::tt::make_signed<const unsigned int>::type, const int);
+BOOST_CHECK_TYPE(::tt::make_signed<const unsigned long>::type, const long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_signed<const unsigned long long>::type, const long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_signed<const unsigned __int64>::type, const __int64);
+#endif
+// volatile unsigned types:
+BOOST_CHECK_TYPE(::tt::make_signed<volatile unsigned char>::type, volatile signed char);
+BOOST_CHECK_TYPE(::tt::make_signed<volatile unsigned short>::type, volatile short);
+BOOST_CHECK_TYPE(::tt::make_signed<volatile unsigned int>::type, volatile int);
+BOOST_CHECK_TYPE(::tt::make_signed<volatile unsigned long>::type, volatile long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_signed<volatile unsigned long long>::type, volatile long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_signed<volatile unsigned __int64>::type, volatile __int64);
+#endif
+// const volatile unsigned types:
+BOOST_CHECK_TYPE(::tt::make_signed<const volatile unsigned char>::type, const volatile signed char);
+BOOST_CHECK_TYPE(::tt::make_signed<const volatile unsigned short>::type, const volatile short);
+BOOST_CHECK_TYPE(::tt::make_signed<const volatile unsigned int>::type, const volatile int);
+BOOST_CHECK_TYPE(::tt::make_signed<const volatile unsigned long>::type, const volatile long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_signed<const volatile unsigned long long>::type, const volatile long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_signed<const volatile unsigned __int64>::type, const volatile __int64);
+#endif
+
+// character types:
+BOOST_CHECK_TYPE(::tt::make_signed<char>::type, signed char);
+BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral< ::tt::make_signed<wchar_t>::type>::value, true);
+BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_signed< ::tt::make_signed<wchar_t>::type>::value, true);
+BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral< ::tt::make_signed<enum_UDT>::type>::value, true);
+BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_signed< ::tt::make_signed<enum_UDT>::type>::value, true);
+TT_TEST_END
+
+

Added: trunk/libs/type_traits/test/make_unsigned_test.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/type_traits/test/make_unsigned_test.cpp 2007-09-10 05:19:49 EDT (Mon, 10 Sep 2007)
@@ -0,0 +1,107 @@
+
+// (C) Copyright John Maddock 2007.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.tt.org/LICENSE_1_0.txt)
+
+#include "test.hpp"
+#include "check_type.hpp"
+#include "check_integral_constant.hpp"
+#ifdef TEST_STD
+# include <type_traits>
+#else
+# include <boost/type_traits/make_unsigned.hpp>
+#endif
+
+TT_TEST_BEGIN(make_unsigned)
+// signed types:
+BOOST_CHECK_TYPE(::tt::make_unsigned<signed char>::type, unsigned char);
+BOOST_CHECK_TYPE(::tt::make_unsigned<short>::type, unsigned short);
+BOOST_CHECK_TYPE(::tt::make_unsigned<int>::type, unsigned int);
+BOOST_CHECK_TYPE(::tt::make_unsigned<long>::type, unsigned long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_unsigned<long long>::type, unsigned long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_unsigned<__int64>::type, unsigned __int64);
+#endif
+// const signed types:
+BOOST_CHECK_TYPE(::tt::make_unsigned<const signed char>::type, const unsigned char);
+BOOST_CHECK_TYPE(::tt::make_unsigned<const short>::type, const unsigned short);
+BOOST_CHECK_TYPE(::tt::make_unsigned<const int>::type, const unsigned int);
+BOOST_CHECK_TYPE(::tt::make_unsigned<const long>::type, const unsigned long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_unsigned<const long long>::type, const unsigned long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_unsigned<const __int64>::type, const unsigned __int64);
+#endif
+// volatile signed types:
+BOOST_CHECK_TYPE(::tt::make_unsigned<volatile signed char>::type, volatile unsigned char);
+BOOST_CHECK_TYPE(::tt::make_unsigned<volatile short>::type, volatile unsigned short);
+BOOST_CHECK_TYPE(::tt::make_unsigned<volatile int>::type, volatile unsigned int);
+BOOST_CHECK_TYPE(::tt::make_unsigned<volatile long>::type, volatile unsigned long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_unsigned<volatile long long>::type, volatile unsigned long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_unsigned<volatile __int64>::type, volatile unsigned __int64);
+#endif
+// const volatile signed types:
+BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile signed char>::type, const volatile unsigned char);
+BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile short>::type, const volatile unsigned short);
+BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile int>::type, const volatile unsigned int);
+BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile long>::type, const volatile unsigned long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile long long>::type, const volatile unsigned long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile __int64>::type, const volatile unsigned __int64);
+#endif
+
+// unsigned types:
+BOOST_CHECK_TYPE(::tt::make_unsigned<unsigned char>::type, unsigned char);
+BOOST_CHECK_TYPE(::tt::make_unsigned<unsigned short>::type, unsigned short);
+BOOST_CHECK_TYPE(::tt::make_unsigned<unsigned int>::type, unsigned int);
+BOOST_CHECK_TYPE(::tt::make_unsigned<unsigned long>::type, unsigned long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_unsigned<unsigned long long>::type, unsigned long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_unsigned<unsigned __int64>::type, unsigned __int64);
+#endif
+// const unsigned types:
+BOOST_CHECK_TYPE(::tt::make_unsigned<const unsigned char>::type, const unsigned char);
+BOOST_CHECK_TYPE(::tt::make_unsigned<const unsigned short>::type, const unsigned short);
+BOOST_CHECK_TYPE(::tt::make_unsigned<const unsigned int>::type, const unsigned int);
+BOOST_CHECK_TYPE(::tt::make_unsigned<const unsigned long>::type, const unsigned long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_unsigned<const unsigned long long>::type, const unsigned long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_unsigned<const unsigned __int64>::type, const unsigned __int64);
+#endif
+// volatile unsigned types:
+BOOST_CHECK_TYPE(::tt::make_unsigned<volatile unsigned char>::type, volatile unsigned char);
+BOOST_CHECK_TYPE(::tt::make_unsigned<volatile unsigned short>::type, volatile unsigned short);
+BOOST_CHECK_TYPE(::tt::make_unsigned<volatile unsigned int>::type, volatile unsigned int);
+BOOST_CHECK_TYPE(::tt::make_unsigned<volatile unsigned long>::type, volatile unsigned long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_unsigned<volatile unsigned long long>::type, volatile unsigned long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_unsigned<volatile unsigned __int64>::type, volatile unsigned __int64);
+#endif
+// const volatile unsigned types:
+BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile unsigned char>::type, const volatile unsigned char);
+BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile unsigned short>::type, const volatile unsigned short);
+BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile unsigned int>::type, const volatile unsigned int);
+BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile unsigned long>::type, const volatile unsigned long);
+#ifdef BOOST_HAS_LONG_LONG
+BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile unsigned long long>::type, const volatile unsigned long long);
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_CHECK_TYPE(::tt::make_unsigned<const volatile unsigned __int64>::type, const volatile unsigned __int64);
+#endif
+
+// character types:
+BOOST_CHECK_TYPE(::tt::make_unsigned<char>::type, unsigned char);
+BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral< ::tt::make_unsigned<wchar_t>::type>::value, true);
+BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_unsigned< ::tt::make_unsigned<wchar_t>::type>::value, true);
+BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral< ::tt::make_unsigned<enum_UDT>::type>::value, true);
+BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_unsigned< ::tt::make_unsigned<enum_UDT>::type>::value, true);
+TT_TEST_END
+
+


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk