diff --git a/doc/aligned_storage.qbk b/doc/aligned_storage.qbk
index 582e39a..92ecca1 100644
--- a/doc/aligned_storage.qbk
+++ b/doc/aligned_storage.qbk
@@ -18,5 +18,37 @@ that is a multiple of `Align`.
__header ` #include
@@ -86,7 +86,7 @@
There are far too many separate classes contained in the type-traits library @@ -176,7 +176,7 @@
@@ -195,7 +195,7 @@
copy in terms of memcpy
all
of the following conditions need to be met:
Iter1
and Iter2
must be pointers.
@@ -212,7 +212,7 @@
By trivial assignment operator we mean that the type is either a scalar type[3] or:
-@@ -267,7 +267,7 @@ comparison between algorithms becomes difficult. However, perhaps we can add a couple of caveats to the premature optimization rule:
-@@ -602,7 +602,7 @@
We hope that in this article we have been able to give you some idea of what @@ -615,7 +615,7 @@
The authors would like to thank Beman Dawes and Howard Hinnant for their helpful @@ -623,7 +623,7 @@
diff --git a/doc/html/boost_typetraits/category/value_traits.html b/doc/html/boost_typetraits/category/value_traits.html index f4567c4..6c3a25a 100644 --- a/doc/html/boost_typetraits/category/value_traits.html +++ b/doc/html/boost_typetraits/category/value_traits.html @@ -3,7 +3,7 @@
These traits are all value traits inheriting from @@ -65,7 +65,7 @@
@@ -150,7 +150,7 @@
The syntax is the following: @@ -162,7 +162,7 @@
where:
-@@ -1129,7 +1129,7 @@
The implementation consists in only header files. The following headers @@ -1321,17 +1321,17 @@
T
then the instantiation of the corresponding
@@ -1411,7 +1411,7 @@
Frederic Bron is very thankful to numerous people from the boost mailing diff --git a/doc/html/boost_typetraits/category/value_traits/primary.html b/doc/html/boost_typetraits/category/value_traits/primary.html index 559e610..a37f5a2 100644 --- a/doc/html/boost_typetraits/category/value_traits/primary.html +++ b/doc/html/boost_typetraits/category/value_traits/primary.html @@ -3,7 +3,7 @@
std::min
function could be written like this:
template <class T, class U> -typename common_type<T, U>::type min(T t, T u) +typename common_type<T, U>::type min(T t, U u) { return t < u ? t : u; } diff --git a/doc/html/boost_typetraits/examples/iter.html b/doc/html/boost_typetraits/examples/iter.html index b4d3cf1..06b3077 100644 --- a/doc/html/boost_typetraits/examples/iter.html +++ b/doc/html/boost_typetraits/examples/iter.html @@ -3,7 +3,7 @@An improved Version of std::iter_swap - + diff --git a/doc/html/boost_typetraits/examples/to_double.html b/doc/html/boost_typetraits/examples/to_double.html index a798db6..bed2ea6 100644 --- a/doc/html/boost_typetraits/examples/to_double.html +++ b/doc/html/boost_typetraits/examples/to_double.html @@ -3,7 +3,7 @@Convert Numeric Types and Enums to double - + diff --git a/doc/html/boost_typetraits/history.html b/doc/html/boost_typetraits/history.html index f34d63f..b957b2e 100644 --- a/doc/html/boost_typetraits/history.html +++ b/doc/html/boost_typetraits/history.html @@ -3,7 +3,7 @@History - + @@ -28,29 +28,38 @@
The following traits classes are dependent on one or more of the above:
- #include <boost/type_traits.hpp>
++ On the GCC and Visual C++ compilers (or compilers that are compatible with + them), we support requests for types with alignments greater than any built + in type (up to 128-bit alignment). Visual C++ users should note that such + "extended" types can not be passed down the stack as by-value function + arguments. +
+![]() |
+Important | +
---|---|
+ + Visual C++ users should be aware that MSVC has an elastic definition of + alignment, for example consider the following code: + ++ +typedef boost::aligned_storage<8,8>::type align_t; +assert(boost::alignment_of<align_t>::value % 8 == 0); +align_t a; +assert(((std::uintptr_t)&a % 8) == 0); +char c = 0; +align_t a1; +assert(((std::uintptr_t)&a1 % 8) == 0); ++ + +
+ In this code the final assert will fail for a 32-bit build because variable
+
+ Further, although MSVC has a mechanism for generating new types with arbitrary
+ alignment requirements, such types cannot be passed as function arguments
+ on the program stack. Therefore had |
diff --git a/doc/html/boost_typetraits/reference/alignment_of.html b/doc/html/boost_typetraits/reference/alignment_of.html index d2f4f0e..8bd65cc 100644 --- a/doc/html/boost_typetraits/reference/alignment_of.html +++ b/doc/html/boost_typetraits/reference/alignment_of.html @@ -3,7 +3,7 @@ |
![]() |
+Important | +
---|---|
+ + Visual C++ users should note that MSVC has varying definitions of "alignment". + For example consider the following code: + ++ +typedef long long align_t; +assert(boost::alignment_of<align_t>::value % 8 == 0); +align_t a; +assert(((std::uintptr_t)&a % 8) == 0); +char c = 0; +align_t a1; +assert(((std::uintptr_t)&a1 % 8) == 0); ++ + +
+ In this code, even though |
diff --git a/doc/html/boost_typetraits/reference/common_type.html b/doc/html/boost_typetraits/reference/common_type.html index 2d14107..ccf9756 100644 --- a/doc/html/boost_typetraits/reference/common_type.html +++ b/doc/html/boost_typetraits/reference/common_type.html @@ -3,7 +3,7 @@ |