diff --git a/doc/extent.qbk b/doc/extent.qbk index 74044a5..d2a77a9 100644 --- a/doc/extent.qbk +++ b/doc/extent.qbk @@ -10,9 +10,9 @@ struct extent : public __integral_constant {}; __inherit Class template extent inherits from `__integral_constant`, -where `EXTENT(T,N)` is the number of elements in the N'th array dimention of type `T`. +where `EXTENT(T,N)` is the number of elements in the N'th array dimension of type `T`. -If `T` is not an array type, or if `N > __rank::value`, or if the N'th array bound +If `T` is not a (built-in) array type, or if `N > __rank::value`, or if the N'th array bound is incomplete, then `EXTENT(T,N)` is zero. __header ` #include ` or ` #include ` @@ -21,8 +21,12 @@ __examples [:`extent` inherits from `__integral_constant`.] +[:`extent::type` is the type `__integral_constant`.] + [:`extent::type` is the type `__integral_constant`.] +[:`extent::type` is the type `__integral_constant`.] + [:`extent::value` is an integral constant expression that evaluates to /4/.] @@ -35,6 +39,9 @@ expression that evaluates to /2/.] [:`extent::value` is an integral constant expression that evaluates to /0/.] +[:`extent >::value` is an integral constant +expression that evaluates to /0/: `boost::array` is a class type and [*not an array type]!] + [:`extent::value_type` is the type `std::size_t`.] [endsect] diff --git a/doc/html/boost_typetraits/background.html b/doc/html/boost_typetraits/background.html index 8657132..be3cd5f 100644 --- a/doc/html/boost_typetraits/background.html +++ b/doc/html/boost_typetraits/background.html @@ -56,7 +56,7 @@ method available to them.

- + Type Traits

@@ -84,7 +84,7 @@ given.

- + Implementation

@@ -174,7 +174,7 @@ in the default template.

- + Optimized copy

@@ -247,7 +247,7 @@ otherwise it will call the "slow but safe version".

- + Was it worth it?

@@ -280,7 +280,7 @@

-

Table 1.1. Time taken to copy 1000 elements using `copy<const +

Table 1.1. Time taken to copy 1000 elements using `copy<const T*, T*>` (times in micro-seconds)

@@ -379,7 +379,7 @@

- + Pair of References

@@ -416,7 +416,7 @@ to hold non-reference types, references, and constant references:

-

Table 1.2. Required Constructor Argument Types

+

Table 1.2. Required Constructor Argument Types

@@ -481,7 +481,7 @@ adds a reference to its type, unless it is already a reference.

-

Table 1.3. Using add_reference to synthesize the correct constructor +

Table 1.3. Using add_reference to synthesize the correct constructor type

@@ -598,7 +598,7 @@ easier to maintain and easier to understand.

- + Conclusion

@@ -611,7 +611,7 @@ can be optimal as well as generic.

- + Acknowledgements

@@ -619,7 +619,7 @@ comments when preparing this article.

- + References
    diff --git a/doc/html/boost_typetraits/category/transform.html b/doc/html/boost_typetraits/category/transform.html index 8474928..025ca05 100644 --- a/doc/html/boost_typetraits/category/transform.html +++ b/doc/html/boost_typetraits/category/transform.html @@ -91,7 +91,7 @@ struct remove_volatile;
    - + Broken Compiler Workarounds:
    diff --git a/doc/html/boost_typetraits/history.html b/doc/html/boost_typetraits/history.html index 43fc0ac..6c491a0 100644 --- a/doc/html/boost_typetraits/history.html +++ b/doc/html/boost_typetraits/history.html @@ -27,7 +27,7 @@ History
- + Boost 1.42.0
  • diff --git a/doc/html/boost_typetraits/intrinsics.html b/doc/html/boost_typetraits/intrinsics.html index 7b03747..af2f92f 100644 --- a/doc/html/boost_typetraits/intrinsics.html +++ b/doc/html/boost_typetraits/intrinsics.html @@ -71,7 +71,7 @@ of the following macros:

    -

    Table 1.4. Macros for Compiler Intrinsics

    +

    Table 1.4. Macros for Compiler Intrinsics

diff --git a/doc/html/boost_typetraits/reference/add_const.html b/doc/html/boost_typetraits/reference/add_const.html index 3c8ab96..ee843e3 100644 --- a/doc/html/boost_typetraits/reference/add_const.html +++ b/doc/html/boost_typetraits/reference/add_const.html @@ -53,7 +53,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.5. Examples

+

Table 1.5. Examples

diff --git a/doc/html/boost_typetraits/reference/add_cv.html b/doc/html/boost_typetraits/reference/add_cv.html index 357ce9c..288067b 100644 --- a/doc/html/boost_typetraits/reference/add_cv.html +++ b/doc/html/boost_typetraits/reference/add_cv.html @@ -54,7 +54,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.6. Examples

+

Table 1.6. Examples

diff --git a/doc/html/boost_typetraits/reference/add_pointer.html b/doc/html/boost_typetraits/reference/add_pointer.html index f894e1c..30c106f 100644 --- a/doc/html/boost_typetraits/reference/add_pointer.html +++ b/doc/html/boost_typetraits/reference/add_pointer.html @@ -56,7 +56,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.7. Examples

+

Table 1.7. Examples

diff --git a/doc/html/boost_typetraits/reference/add_reference.html b/doc/html/boost_typetraits/reference/add_reference.html index e9a4c0a..7bdd876 100644 --- a/doc/html/boost_typetraits/reference/add_reference.html +++ b/doc/html/boost_typetraits/reference/add_reference.html @@ -53,7 +53,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.8. Examples

+

Table 1.8. Examples

diff --git a/doc/html/boost_typetraits/reference/add_volatile.html b/doc/html/boost_typetraits/reference/add_volatile.html index 0fd6759..dd48cc4 100644 --- a/doc/html/boost_typetraits/reference/add_volatile.html +++ b/doc/html/boost_typetraits/reference/add_volatile.html @@ -53,7 +53,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.9. Examples

+

Table 1.9. Examples

diff --git a/doc/html/boost_typetraits/reference/decay.html b/doc/html/boost_typetraits/reference/decay.html index 55017eb..bde3e78 100644 --- a/doc/html/boost_typetraits/reference/decay.html +++ b/doc/html/boost_typetraits/reference/decay.html @@ -48,7 +48,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.10. Examples

+

Table 1.10. Examples

diff --git a/doc/html/boost_typetraits/reference/extent.html b/doc/html/boost_typetraits/reference/extent.html index 1de330f..97607d2 100644 --- a/doc/html/boost_typetraits/reference/extent.html +++ b/doc/html/boost_typetraits/reference/extent.html @@ -33,11 +33,11 @@ Inherits: 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. + dimension of type T.

- If T is not an array type, - or if N > + If T is not a (built-in) + array type, or if N > rank<T>::value, or if the N'th array bound is incomplete, then EXTENT(T,N) is zero.

@@ -59,6 +59,16 @@

+

+

+

+ extent<double[2][3][4], + 0>::type is the type integral_constant<std::size_t, 2>. +

+

+

+
+

@@ -69,6 +79,16 @@

+

+

+

+ extent<double[2][3][4], + 3>::type is the type integral_constant<std::size_t, 4>. +

+

+

+
+

@@ -109,6 +129,17 @@

+

+

+

+ extent<boost::array<int, 3> >::value + is an integral constant expression that evaluates to 0: + boost::array is a class type and not an array type! +

+

+

+
+

diff --git a/doc/html/boost_typetraits/reference/floating_point_promotion.html b/doc/html/boost_typetraits/reference/floating_point_promotion.html index c66cedb..9e12ecd 100644 --- a/doc/html/boost_typetraits/reference/floating_point_promotion.html +++ b/doc/html/boost_typetraits/reference/floating_point_promotion.html @@ -49,7 +49,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.11. Examples

+

Table 1.11. Examples

diff --git a/doc/html/boost_typetraits/reference/function_traits.html b/doc/html/boost_typetraits/reference/function_traits.html index d349838..a12a921 100644 --- a/doc/html/boost_typetraits/reference/function_traits.html +++ b/doc/html/boost_typetraits/reference/function_traits.html @@ -59,7 +59,7 @@

-

Table 1.12. Function Traits Members

+

Table 1.12. Function Traits Members

@@ -122,7 +122,7 @@

-

Table 1.13. Examples

+

Table 1.13. Examples

diff --git a/doc/html/boost_typetraits/reference/integral_promotion.html b/doc/html/boost_typetraits/reference/integral_promotion.html index f6e2ea8..6ec3c9b 100644 --- a/doc/html/boost_typetraits/reference/integral_promotion.html +++ b/doc/html/boost_typetraits/reference/integral_promotion.html @@ -49,7 +49,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.14. Examples

+

Table 1.14. Examples

diff --git a/doc/html/boost_typetraits/reference/make_signed.html b/doc/html/boost_typetraits/reference/make_signed.html index 7a12227..ffc5ed8 100644 --- a/doc/html/boost_typetraits/reference/make_signed.html +++ b/doc/html/boost_typetraits/reference/make_signed.html @@ -54,7 +54,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.15. Examples

+

Table 1.15. Examples

diff --git a/doc/html/boost_typetraits/reference/make_unsigned.html b/doc/html/boost_typetraits/reference/make_unsigned.html index ac6f424..0d896d5 100644 --- a/doc/html/boost_typetraits/reference/make_unsigned.html +++ b/doc/html/boost_typetraits/reference/make_unsigned.html @@ -54,7 +54,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.16. Examples

+

Table 1.16. Examples

diff --git a/doc/html/boost_typetraits/reference/promote.html b/doc/html/boost_typetraits/reference/promote.html index 60695b8..823a806 100644 --- a/doc/html/boost_typetraits/reference/promote.html +++ b/doc/html/boost_typetraits/reference/promote.html @@ -51,7 +51,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.17. Examples

+

Table 1.17. Examples

diff --git a/doc/html/boost_typetraits/reference/rank.html b/doc/html/boost_typetraits/reference/rank.html index ec539af..039d7ec 100644 --- a/doc/html/boost_typetraits/reference/rank.html +++ b/doc/html/boost_typetraits/reference/rank.html @@ -36,8 +36,8 @@ number of array dimensions in type T.

- If T is not an array type, - then RANK(T) is zero. + If T is not a (built-in) + array type, then RANK(T) is zero.

Header: #include @@ -97,6 +97,17 @@

+

+

+

+ rank<boost::array<int, 3> >::value + is an integral constant expression that evaluates to 0: + boost::array is a class type and not an array type! +

+

+

+
+

diff --git a/doc/html/boost_typetraits/reference/remove_all_extents.html b/doc/html/boost_typetraits/reference/remove_all_extents.html index c9583a0..17993e4 100644 --- a/doc/html/boost_typetraits/reference/remove_all_extents.html +++ b/doc/html/boost_typetraits/reference/remove_all_extents.html @@ -54,7 +54,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.18. Examples

+

Table 1.18. Examples

diff --git a/doc/html/boost_typetraits/reference/remove_const.html b/doc/html/boost_typetraits/reference/remove_const.html index 373a5b6..bebec75 100644 --- a/doc/html/boost_typetraits/reference/remove_const.html +++ b/doc/html/boost_typetraits/reference/remove_const.html @@ -53,7 +53,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.19. Examples

+

Table 1.19. Examples

diff --git a/doc/html/boost_typetraits/reference/remove_cv.html b/doc/html/boost_typetraits/reference/remove_cv.html index c54ae3a..fe73b51 100644 --- a/doc/html/boost_typetraits/reference/remove_cv.html +++ b/doc/html/boost_typetraits/reference/remove_cv.html @@ -53,7 +53,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.20. Examples

+

Table 1.20. Examples

diff --git a/doc/html/boost_typetraits/reference/remove_extent.html b/doc/html/boost_typetraits/reference/remove_extent.html index bc73a36..35c29c1 100644 --- a/doc/html/boost_typetraits/reference/remove_extent.html +++ b/doc/html/boost_typetraits/reference/remove_extent.html @@ -54,7 +54,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.21. Examples

+

Table 1.21. Examples

diff --git a/doc/html/boost_typetraits/reference/remove_pointer.html b/doc/html/boost_typetraits/reference/remove_pointer.html index c00286f..761fe7a 100644 --- a/doc/html/boost_typetraits/reference/remove_pointer.html +++ b/doc/html/boost_typetraits/reference/remove_pointer.html @@ -34,7 +34,9 @@

type: The same type as T, - but with any pointer modifier removed. + but with any pointer modifier removed. Note that pointers to members are + left unchanged: removing the pointer decoration would result in an invalid + type.

C++ Standard Reference: 8.3.1. @@ -53,7 +55,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.22. Examples

+

Table 1.22. Examples

diff --git a/doc/html/boost_typetraits/reference/remove_reference.html b/doc/html/boost_typetraits/reference/remove_reference.html index a004519..a5aecf1 100644 --- a/doc/html/boost_typetraits/reference/remove_reference.html +++ b/doc/html/boost_typetraits/reference/remove_reference.html @@ -53,7 +53,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.23. Examples

+

Table 1.23. Examples

diff --git a/doc/html/boost_typetraits/reference/remove_volatile.html b/doc/html/boost_typetraits/reference/remove_volatile.html index 43a8f18..7a1333b 100644 --- a/doc/html/boost_typetraits/reference/remove_volatile.html +++ b/doc/html/boost_typetraits/reference/remove_volatile.html @@ -53,7 +53,7 @@ or #include <boost/type_traits.hpp>

-

Table 1.24. Examples

+

Table 1.24. Examples

diff --git a/doc/html/index.html b/doc/html/index.html index 58eb675..e60d785 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -30,7 +30,7 @@ Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten Ottosen, Robert Ramey and Jeremy Siek

-

+

Distributed under 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)

@@ -164,7 +164,7 @@

- +

Last revised: March 30, 2009 at 18:02:46 +0100

Last revised: January 11, 2010 at 13:19:25 +0000


diff --git a/doc/rank.qbk b/doc/rank.qbk index 578839b..984a604 100644 --- a/doc/rank.qbk +++ b/doc/rank.qbk @@ -12,7 +12,7 @@ __inherit Class template rank inherits from `__integral_constant`, where `RANK(T)` is the number of array dimensions in type `T`. -If `T` is not an array type, then `RANK(T)` is zero. +If `T` is not a (built-in) array type, then `RANK(T)` is zero. __header ` #include ` or ` #include ` @@ -31,6 +31,9 @@ expression that evaluates to /2/.] [:`rank::value` is an integral constant expression that evaluates to /0/.] +[:`rank >::value` is an integral constant +expression that evaluates to /0/: `boost::array` is a class type and [*not an array type]!] + [:`rank::value_type` is the type `std::size_t`.] [endsect] diff --git a/doc/remove_pointer.qbk b/doc/remove_pointer.qbk index dcbaa2f..0504252 100644 --- a/doc/remove_pointer.qbk +++ b/doc/remove_pointer.qbk @@ -13,7 +13,8 @@ typedef __below type; }; -__type The same type as `T`, but with any pointer modifier removed. +__type The same type as `T`, but with any pointer modifier removed. Note that pointers to members are left unchanged: +removing the pointer decoration would result in an invalid type. __std_ref 8.3.1. diff --git a/include/boost/type_traits/is_empty.hpp b/include/boost/type_traits/is_empty.hpp index c8eb791..45c4e9e 100644 --- a/include/boost/type_traits/is_empty.hpp +++ b/include/boost/type_traits/is_empty.hpp @@ -36,6 +36,12 @@ namespace boost { namespace detail { #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION + +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4624) // destructor could not be generated +#endif + template struct empty_helper_t1 : public T { @@ -47,6 +53,10 @@ private: empty_helper_t1& operator=(const empty_helper_t1&); }; +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + struct empty_helper_t2 { int i[256]; }; #if !BOOST_WORKAROUND(__BORLANDC__, < 0x600)