From 19b82cc55b3fef9fcad278448f7239e161ec713d Mon Sep 17 00:00:00 2001
From: John Maddock
Date: Thu, 6 Jan 2011 17:09:17 +0000
Subject: [PATCH 01/82] Fix inspection report issues.
[SVN r67728]
---
doc/common_type.qbk | 8 ++++++++
doc/conditional.qbk | 6 ++++++
include/boost/type_traits/function_traits.hpp | 2 +-
include/boost/type_traits/is_const.hpp | 6 +++---
include/boost/type_traits/is_volatile.hpp | 6 +++---
include/boost/type_traits/remove_cv.hpp | 4 ++--
include/boost/type_traits/remove_reference.hpp | 4 ++--
test/common_type_fail.cpp | 3 +--
test/is_virtual_base_of_test.cpp | 8 ++++----
9 files changed, 30 insertions(+), 17 deletions(-)
diff --git a/doc/common_type.qbk b/doc/common_type.qbk
index 71cfbf6..cc7cf21 100644
--- a/doc/common_type.qbk
+++ b/doc/common_type.qbk
@@ -1,3 +1,11 @@
+[/
+ Copyright 2008 Howard Hinnant
+ Copyright 2008 Beman Dawes
+ Copyright 2010 John Maddock
+ 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).
+]
[/===================================================================]
[section:common_type common_type]
diff --git a/doc/conditional.qbk b/doc/conditional.qbk
index 317bf53..af72844 100644
--- a/doc/conditional.qbk
+++ b/doc/conditional.qbk
@@ -1,3 +1,9 @@
+[/
+ Copyright 2010 John Maddock.
+ 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).
+]
[/===================================================================]
[section:conditional conditional]
diff --git a/include/boost/type_traits/function_traits.hpp b/include/boost/type_traits/function_traits.hpp
index 6d708cd..d715345 100644
--- a/include/boost/type_traits/function_traits.hpp
+++ b/include/boost/type_traits/function_traits.hpp
@@ -166,7 +166,7 @@ struct function_traits_helper
template
struct function_traits :
- public boost::detail::function_traits_helper::type>
+ public boost::detail::function_traits_helper::type>
{
};
diff --git a/include/boost/type_traits/is_const.hpp b/include/boost/type_traits/is_const.hpp
index 812ed15..99b0f36 100644
--- a/include/boost/type_traits/is_const.hpp
+++ b/include/boost/type_traits/is_const.hpp
@@ -59,16 +59,16 @@ template
struct is_const_rvalue_filter
{
#if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
- BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp::type*>::is_const);
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp::type*>::is_const);
#else
- BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp::is_const);
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp::is_const);
#endif
};
#ifndef BOOST_NO_RVALUE_REFERENCES
template
struct is_const_rvalue_filter
{
- BOOST_STATIC_CONSTANT(bool, value = false);
+ BOOST_STATIC_CONSTANT(bool, value = false);
};
#endif
}
diff --git a/include/boost/type_traits/is_volatile.hpp b/include/boost/type_traits/is_volatile.hpp
index e531263..43c3a8b 100644
--- a/include/boost/type_traits/is_volatile.hpp
+++ b/include/boost/type_traits/is_volatile.hpp
@@ -46,9 +46,9 @@ template
struct is_volatile_rval_filter
{
#if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
- BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp::type*>::is_volatile);
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp::type*>::is_volatile);
#else
- BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp::is_volatile);
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp::is_volatile);
#endif
};
#ifndef BOOST_NO_RVALUE_REFERENCES
@@ -59,7 +59,7 @@ struct is_volatile_rval_filter
template
struct is_volatile_rval_filter
{
- BOOST_STATIC_CONSTANT(bool, value = false);
+ BOOST_STATIC_CONSTANT(bool, value = false);
};
#endif
}
diff --git a/include/boost/type_traits/remove_cv.hpp b/include/boost/type_traits/remove_cv.hpp
index 668e755..4061fd2 100644
--- a/include/boost/type_traits/remove_cv.hpp
+++ b/include/boost/type_traits/remove_cv.hpp
@@ -32,7 +32,7 @@ namespace detail{
template
struct rvalue_ref_filter_rem_cv
{
- typedef typename boost::detail::cv_traits_imp::unqualified_type type;
+ typedef typename boost::detail::cv_traits_imp::unqualified_type type;
};
#ifndef BOOST_NO_RVALUE_REFERENCES
@@ -43,7 +43,7 @@ struct rvalue_ref_filter_rem_cv
template
struct rvalue_ref_filter_rem_cv
{
- typedef T&& type;
+ typedef T&& type;
};
#endif
diff --git a/include/boost/type_traits/remove_reference.hpp b/include/boost/type_traits/remove_reference.hpp
index a87db33..f453086 100644
--- a/include/boost/type_traits/remove_reference.hpp
+++ b/include/boost/type_traits/remove_reference.hpp
@@ -32,13 +32,13 @@ namespace detail{
template
struct remove_rvalue_ref
{
- typedef T type;
+ typedef T type;
};
#ifndef BOOST_NO_RVALUE_REFERENCES
template
struct remove_rvalue_ref
{
- typedef T type;
+ typedef T type;
};
#endif
diff --git a/test/common_type_fail.cpp b/test/common_type_fail.cpp
index fc97d2e..2b52252 100644
--- a/test/common_type_fail.cpp
+++ b/test/common_type_fail.cpp
@@ -24,5 +24,4 @@ struct C2 {};
typedef tt::common_type::type AC;
-
-
\ No newline at end of file
+
diff --git a/test/is_virtual_base_of_test.cpp b/test/is_virtual_base_of_test.cpp
index a9355f5..2877b4a 100644
--- a/test/is_virtual_base_of_test.cpp
+++ b/test/is_virtual_base_of_test.cpp
@@ -28,14 +28,14 @@ public:
class non_virtual_base
{
public:
- non_virtual_base();
+ non_virtual_base();
};
class non_virtual_derived : public non_virtual_base
{
public:
- non_virtual_derived();
- virtual int Y();
- virtual int X();
+ non_virtual_derived();
+ virtual int Y();
+ virtual int X();
};
TT_TEST_BEGIN(is_virtual_base_of)
From a865f64c2ff8a44b3a362e0956ef3fb03240d149 Mon Sep 17 00:00:00 2001
From: John Maddock
Date: Mon, 10 Jan 2011 13:17:45 +0000
Subject: [PATCH 02/82] Document the restrictions on is_virtual_base_of. Refs
#3730.
[SVN r67912]
---
doc/html/boost_typetraits/background.html | 17 ++++++------
doc/html/boost_typetraits/category.html | 1 +
.../boost_typetraits/category/alignment.html | 1 +
.../boost_typetraits/category/function.html | 1 +
.../boost_typetraits/category/transform.html | 3 ++-
.../category/value_traits.html | 1 +
.../category/value_traits/primary.html | 1 +
.../category/value_traits/properties.html | 1 +
.../category/value_traits/relate.html | 1 +
doc/html/boost_typetraits/credits.html | 1 +
doc/html/boost_typetraits/examples.html | 1 +
doc/html/boost_typetraits/examples/copy.html | 1 +
.../boost_typetraits/examples/destruct.html | 1 +
doc/html/boost_typetraits/examples/fill.html | 1 +
.../examples/improved_min.html | 1 +
doc/html/boost_typetraits/examples/iter.html | 1 +
.../boost_typetraits/examples/to_double.html | 1 +
doc/html/boost_typetraits/history.html | 7 ++---
doc/html/boost_typetraits/intrinsics.html | 1 +
doc/html/boost_typetraits/intro.html | 1 +
doc/html/boost_typetraits/mpl.html | 1 +
doc/html/boost_typetraits/reference.html | 1 +
.../boost_typetraits/reference/add_const.html | 1 +
.../boost_typetraits/reference/add_cv.html | 1 +
.../reference/add_lvalue_reference.html | 1 +
.../reference/add_pointer.html | 1 +
.../reference/add_reference.html | 1 +
.../reference/add_rvalue_reference.html | 1 +
.../reference/add_volatile.html | 1 +
.../reference/aligned_storage.html | 1 +
.../reference/alignment_of.html | 1 +
.../reference/common_type.html | 15 ++++++-----
.../reference/conditional.html | 1 +
.../boost_typetraits/reference/decay.html | 1 +
.../boost_typetraits/reference/extent.html | 1 +
.../reference/floating_point_promotion.html | 1 +
.../reference/function_traits.html | 1 +
.../reference/has_new_operator.html | 1 +
.../reference/has_no_throw_def_cons.html | 1 +
.../reference/has_nothrow_assign.html | 1 +
.../reference/has_nothrow_constructor.html | 1 +
.../reference/has_nothrow_copy.html | 1 +
.../reference/has_nothrow_cp_cons.html | 1 +
.../reference/has_trivial_assign.html | 1 +
.../reference/has_trivial_constructor.html | 1 +
.../reference/has_trivial_copy.html | 1 +
.../reference/has_trivial_cp_cons.html | 1 +
.../reference/has_trivial_def_cons.html | 1 +
.../reference/has_trivial_destructor.html | 1 +
.../reference/has_virtual_destructor.html | 1 +
.../reference/integral_constant.html | 1 +
.../reference/integral_promotion.html | 1 +
.../reference/is_abstract.html | 1 +
.../reference/is_arithmetic.html | 1 +
.../boost_typetraits/reference/is_array.html | 1 +
.../reference/is_base_of.html | 1 +
.../boost_typetraits/reference/is_class.html | 1 +
.../reference/is_complex.html | 1 +
.../reference/is_compound.html | 1 +
.../boost_typetraits/reference/is_const.html | 1 +
.../reference/is_convertible.html | 1 +
.../boost_typetraits/reference/is_empty.html | 1 +
.../boost_typetraits/reference/is_enum.html | 1 +
.../reference/is_floating_point.html | 1 +
.../reference/is_function.html | 1 +
.../reference/is_fundamental.html | 1 +
.../reference/is_integral.html | 1 +
.../reference/is_lvalue_reference.html | 1 +
.../reference/is_member_function_pointer.html | 1 +
.../reference/is_member_object_pointer.html | 1 +
.../reference/is_member_pointer.html | 1 +
.../boost_typetraits/reference/is_object.html | 1 +
.../boost_typetraits/reference/is_pod.html | 1 +
.../reference/is_pointer.html | 1 +
.../reference/is_polymorphic.html | 1 +
.../reference/is_reference.html | 1 +
.../reference/is_rvalue_reference.html | 1 +
.../boost_typetraits/reference/is_same.html | 1 +
.../boost_typetraits/reference/is_scalar.html | 1 +
.../boost_typetraits/reference/is_signed.html | 1 +
.../reference/is_stateless.html | 1 +
.../boost_typetraits/reference/is_union.html | 1 +
.../reference/is_unsigned.html | 1 +
.../reference/is_virtual_base_of.html | 27 +++++++++++++++----
.../boost_typetraits/reference/is_void.html | 1 +
.../reference/is_volatile.html | 1 +
.../reference/make_signed.html | 1 +
.../reference/make_unsigned.html | 1 +
.../boost_typetraits/reference/promote.html | 1 +
doc/html/boost_typetraits/reference/rank.html | 1 +
.../reference/remove_all_extents.html | 1 +
.../reference/remove_const.html | 1 +
.../boost_typetraits/reference/remove_cv.html | 1 +
.../reference/remove_extent.html | 1 +
.../reference/remove_pointer.html | 1 +
.../reference/remove_reference.html | 1 +
.../reference/remove_volatile.html | 1 +
.../reference/type_with_alignment.html | 1 +
doc/html/boost_typetraits/user_defined.html | 1 +
doc/html/index.html | 5 ++--
doc/html/index/s11.html | 3 ++-
doc/html/index/s12.html | 3 ++-
doc/html/index/s13.html | 3 ++-
doc/html/index/s14.html | 3 ++-
doc/is_virtual_base_of.qbk | 7 +++++
105 files changed, 157 insertions(+), 30 deletions(-)
diff --git a/doc/html/boost_typetraits/background.html b/doc/html/boost_typetraits/background.html
index 7a5d858..2585545 100644
--- a/doc/html/boost_typetraits/background.html
+++ b/doc/html/boost_typetraits/background.html
@@ -1,3 +1,4 @@
+
@@ -56,7 +57,7 @@
method available to them.
@@ -84,7 +85,7 @@
given.
@@ -174,7 +175,7 @@
in the default template.
@@ -247,7 +248,7 @@
otherwise it will call the "slow but safe version".
@@ -379,7 +380,7 @@
@@ -597,7 +598,7 @@
easier to maintain and easier to understand.
@@ -610,7 +611,7 @@
can be optimal as well as generic.
@@ -618,7 +619,7 @@
comments when preparing this article.
-
+
References
diff --git a/doc/html/boost_typetraits/category.html b/doc/html/boost_typetraits/category.html
index 3809935..228f739 100644
--- a/doc/html/boost_typetraits/category.html
+++ b/doc/html/boost_typetraits/category.html
@@ -1,3 +1,4 @@
+
diff --git a/doc/html/boost_typetraits/category/alignment.html b/doc/html/boost_typetraits/category/alignment.html
index 0a07d56..c4a43f3 100644
--- a/doc/html/boost_typetraits/category/alignment.html
+++ b/doc/html/boost_typetraits/category/alignment.html
@@ -1,3 +1,4 @@
+
diff --git a/doc/html/boost_typetraits/category/function.html b/doc/html/boost_typetraits/category/function.html
index 567e397..f98db03 100644
--- a/doc/html/boost_typetraits/category/function.html
+++ b/doc/html/boost_typetraits/category/function.html
@@ -1,3 +1,4 @@
+
diff --git a/doc/html/boost_typetraits/category/transform.html b/doc/html/boost_typetraits/category/transform.html
index 46abc9b..749e621 100644
--- a/doc/html/boost_typetraits/category/transform.html
+++ b/doc/html/boost_typetraits/category/transform.html
@@ -1,3 +1,4 @@
+
@@ -103,7 +104,7 @@
struct remove_volatile;
diff --git a/doc/html/boost_typetraits/category/value_traits.html b/doc/html/boost_typetraits/category/value_traits.html
index aacdfb6..a9e456b 100644
--- a/doc/html/boost_typetraits/category/value_traits.html
+++ b/doc/html/boost_typetraits/category/value_traits.html
@@ -1,3 +1,4 @@
+
diff --git a/doc/html/boost_typetraits/category/value_traits/primary.html b/doc/html/boost_typetraits/category/value_traits/primary.html
index 88c8481..53eedc6 100644
--- a/doc/html/boost_typetraits/category/value_traits/primary.html
+++ b/doc/html/boost_typetraits/category/value_traits/primary.html
@@ -1,3 +1,4 @@
+
diff --git a/doc/html/boost_typetraits/category/value_traits/properties.html b/doc/html/boost_typetraits/category/value_traits/properties.html
index b212687..e870e41 100644
--- a/doc/html/boost_typetraits/category/value_traits/properties.html
+++ b/doc/html/boost_typetraits/category/value_traits/properties.html
@@ -1,3 +1,4 @@
+
diff --git a/doc/html/boost_typetraits/category/value_traits/relate.html b/doc/html/boost_typetraits/category/value_traits/relate.html
index 7aec8fc..d885f05 100644
--- a/doc/html/boost_typetraits/category/value_traits/relate.html
+++ b/doc/html/boost_typetraits/category/value_traits/relate.html
@@ -1,3 +1,4 @@
+
diff --git a/doc/html/boost_typetraits/credits.html b/doc/html/boost_typetraits/credits.html
index 8fa1efa..7754f97 100644
--- a/doc/html/boost_typetraits/credits.html
+++ b/doc/html/boost_typetraits/credits.html
@@ -1,3 +1,4 @@
+
diff --git a/doc/html/boost_typetraits/examples.html b/doc/html/boost_typetraits/examples.html
index ff51628..ef277b0 100644
--- a/doc/html/boost_typetraits/examples.html
+++ b/doc/html/boost_typetraits/examples.html
@@ -1,3 +1,4 @@
+
diff --git a/doc/html/boost_typetraits/examples/copy.html b/doc/html/boost_typetraits/examples/copy.html
index bdce58c..c5b086c 100644
--- a/doc/html/boost_typetraits/examples/copy.html
+++ b/doc/html/boost_typetraits/examples/copy.html
@@ -1,3 +1,4 @@
+
diff --git a/doc/html/boost_typetraits/examples/destruct.html b/doc/html/boost_typetraits/examples/destruct.html
index 2e7b8ea..1a891e7 100644
--- a/doc/html/boost_typetraits/examples/destruct.html
+++ b/doc/html/boost_typetraits/examples/destruct.html
@@ -1,3 +1,4 @@
+
diff --git a/doc/html/boost_typetraits/examples/fill.html b/doc/html/boost_typetraits/examples/fill.html
index aab0cf1..e1696f2 100644
--- a/doc/html/boost_typetraits/examples/fill.html
+++ b/doc/html/boost_typetraits/examples/fill.html
@@ -1,3 +1,4 @@
+
diff --git a/doc/html/boost_typetraits/examples/improved_min.html b/doc/html/boost_typetraits/examples/improved_min.html
index c062ea3..c927db4 100644
--- a/doc/html/boost_typetraits/examples/improved_min.html
+++ b/doc/html/boost_typetraits/examples/improved_min.html
@@ -1,3 +1,4 @@
+
diff --git a/doc/html/boost_typetraits/examples/iter.html b/doc/html/boost_typetraits/examples/iter.html
index 338d218..5085e7c 100644
--- a/doc/html/boost_typetraits/examples/iter.html
+++ b/doc/html/boost_typetraits/examples/iter.html
@@ -1,3 +1,4 @@
+
diff --git a/doc/html/boost_typetraits/examples/to_double.html b/doc/html/boost_typetraits/examples/to_double.html
index 829bd27..e639aa1 100644
--- a/doc/html/boost_typetraits/examples/to_double.html
+++ b/doc/html/boost_typetraits/examples/to_double.html
@@ -1,3 +1,4 @@
+
diff --git a/doc/html/boost_typetraits/history.html b/doc/html/boost_typetraits/history.html
index 08cd539..1df26a0 100644
--- a/doc/html/boost_typetraits/history.html
+++ b/doc/html/boost_typetraits/history.html
@@ -1,3 +1,4 @@
+
@@ -27,7 +28,7 @@
History
A C D E F H I M P R T
-
diff --git a/doc/html/index/s12.html b/doc/html/index/s12.html
index 4422062..0d4780e 100644
--- a/doc/html/index/s12.html
+++ b/doc/html/index/s12.html
@@ -1,3 +1,4 @@
+
@@ -24,7 +25,7 @@
F R T
-
diff --git a/doc/html/index/s13.html b/doc/html/index/s13.html
index 6a4c8eb..e577a36 100644
--- a/doc/html/index/s13.html
+++ b/doc/html/index/s13.html
@@ -1,3 +1,4 @@
+
@@ -24,7 +25,7 @@
B
-
diff --git a/doc/html/index/s14.html b/doc/html/index/s14.html
index 6072f6d..401ef2c 100644
--- a/doc/html/index/s14.html
+++ b/doc/html/index/s14.html
@@ -1,3 +1,4 @@
+
@@ -23,7 +24,7 @@
A B C D E F H I M P R S T U
-
diff --git a/doc/is_virtual_base_of.qbk b/doc/is_virtual_base_of.qbk
index 72cf23a..54202de 100644
--- a/doc/is_virtual_base_of.qbk
+++ b/doc/is_virtual_base_of.qbk
@@ -20,6 +20,13 @@ __header ` #include ` or ` #include
Date: Mon, 10 Jan 2011 13:23:51 +0000
Subject: [PATCH 03/82] Document the restrictions on is_virtual_base_of. Refs
#3730.
[SVN r67913]
---
doc/html/boost_typetraits/background.html | 16 ++++++-------
.../boost_typetraits/category/transform.html | 2 +-
doc/html/boost_typetraits/history.html | 6 ++---
.../reference/common_type.html | 14 +++++------
.../reference/is_virtual_base_of.html | 24 +++++++++----------
doc/html/index.html | 2 +-
doc/html/index/s11.html | 2 +-
doc/html/index/s12.html | 2 +-
doc/html/index/s13.html | 2 +-
doc/html/index/s14.html | 2 +-
doc/is_virtual_base_of.qbk | 2 +-
11 files changed, 36 insertions(+), 38 deletions(-)
diff --git a/doc/html/boost_typetraits/background.html b/doc/html/boost_typetraits/background.html
index 2585545..add632a 100644
--- a/doc/html/boost_typetraits/background.html
+++ b/doc/html/boost_typetraits/background.html
@@ -57,7 +57,7 @@
method available to them.
@@ -85,7 +85,7 @@
given.
@@ -175,7 +175,7 @@
in the default template.
@@ -248,7 +248,7 @@
otherwise it will call the "slow but safe version".
@@ -380,7 +380,7 @@
@@ -598,7 +598,7 @@
easier to maintain and easier to understand.
@@ -611,7 +611,7 @@
can be optimal as well as generic.
@@ -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 749e621..1006b48 100644
--- a/doc/html/boost_typetraits/category/transform.html
+++ b/doc/html/boost_typetraits/category/transform.html
@@ -104,7 +104,7 @@
struct remove_volatile;
diff --git a/doc/html/boost_typetraits/history.html b/doc/html/boost_typetraits/history.html
index 1df26a0..e9e116b 100644
--- a/doc/html/boost_typetraits/history.html
+++ b/doc/html/boost_typetraits/history.html
@@ -28,7 +28,7 @@
History
+
+ Examples:
+
+
+ Given: class Base{}; class Derived : public virtual
+ Base{};
+
is_virtual_base_of<Base, Derived>
inherits from true_type
.
diff --git a/doc/html/index.html b/doc/html/index.html
index 8df9c0e..06eee07 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -31,7 +31,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)
diff --git a/doc/html/index/s11.html b/doc/html/index/s11.html
index 982785e..a875e7d 100644
--- a/doc/html/index/s11.html
+++ b/doc/html/index/s11.html
@@ -25,7 +25,7 @@
A C D E F H I M P R T
-
diff --git a/doc/html/index/s12.html b/doc/html/index/s12.html
index 0d4780e..e6e1fe4 100644
--- a/doc/html/index/s12.html
+++ b/doc/html/index/s12.html
@@ -25,7 +25,7 @@
F R T
-
diff --git a/doc/html/index/s13.html b/doc/html/index/s13.html
index e577a36..97c9a37 100644
--- a/doc/html/index/s13.html
+++ b/doc/html/index/s13.html
@@ -25,7 +25,7 @@
B
-
diff --git a/doc/html/index/s14.html b/doc/html/index/s14.html
index 401ef2c..66b2729 100644
--- a/doc/html/index/s14.html
+++ b/doc/html/index/s14.html
@@ -24,7 +24,7 @@
A B C D E F H I M P R S T U
-
diff --git a/doc/is_virtual_base_of.qbk b/doc/is_virtual_base_of.qbk
index 54202de..f7b5f80 100644
--- a/doc/is_virtual_base_of.qbk
+++ b/doc/is_virtual_base_of.qbk
@@ -23,7 +23,7 @@ __compat this trait also requires a working __is_base_of trait.
[note
There are a small number of cases where it's simply not possible for this trait to work, and
where attempting to instantiate the trait will cause compiler errors (see bug report
-[@https://svn.boost.org/trac/boost/ticket/3730 #3730). Further more the issues may well
+[@https://svn.boost.org/trac/boost/ticket/3730 #3730]). Further more the issues may well
be compiler specific. In this situation the user should supply a full specialization of
the trait to work around the problem.]
From c02516b25b2b51c5e835c07427ae3dbe1364af12 Mon Sep 17 00:00:00 2001
From: John Maddock
Date: Wed, 12 Jan 2011 13:29:37 +0000
Subject: [PATCH 04/82] Fix comon_type to actually work when typeof isn't in
use. Applies fixes from Vicente Botet.
[SVN r68040]
---
.../type_traits/detail/common_type_imp.hpp | 67 ++++--
test/check_type.hpp | 26 +++
test/common_type_2_test.cpp | 212 ++++++++++++++++++
test/common_type_test.cpp | 103 +++++++++
4 files changed, 390 insertions(+), 18 deletions(-)
create mode 100644 test/common_type_2_test.cpp
diff --git a/include/boost/type_traits/detail/common_type_imp.hpp b/include/boost/type_traits/detail/common_type_imp.hpp
index 9e06282..59c7743 100644
--- a/include/boost/type_traits/detail/common_type_imp.hpp
+++ b/include/boost/type_traits/detail/common_type_imp.hpp
@@ -72,21 +72,45 @@ struct propagate_cv< const volatile From, To >
{ typedef To const volatile type; };
/*******************************************************************************
- * struct is_signable_integral
+ * struct is_integral_or_enum
*
* This metafunction determines if T is an integral type which can be made
* signed or unsigned.
******************************************************************************/
template< class T >
-struct is_signable_integral
+struct is_integral_or_enum
: mpl::or_< is_integral, is_enum >
{ };
template<>
-struct is_signable_integral< bool >
+struct is_integral_or_enum< bool >
: false_type
{ };
+/*******************************************************************************
+ * struct make_unsigned_soft
+ * struct make_signed_soft
+ *
+ * These metafunction are identical to make_unsigned and make_signed,
+ * respetively, except for special-casing bool.
+ ******************************************************************************/
+
+template< class T >
+struct make_unsigned_soft
+ : make_unsigned
+{ };
+template<>
+struct make_unsigned_soft< bool >
+{ typedef bool type; };
+
+template< class T >
+struct make_signed_soft
+ : make_signed
+{ };
+template<>
+struct make_signed_soft< bool >
+{ typedef bool type; };
+
/*******************************************************************************
* struct sizeof_t
* typedef ... yes_type
@@ -185,12 +209,21 @@ struct select< Sequence, N, N >
* { V*, W*, V'*, W'* }
* where V' is V with whatever cv-qualifiers are on W, and W' is W
* with whatever cv-qualifiers are on V
- * else T' and U' are both "signable integral types" (integral and enum
- * types excepting bool), then:
+ * else if T' and U' are both integral or enum types, then:
* define the set of NominalCandidates to be
- * { unsigned(T'), unsigned(U'), signed(T'), signed(U') }
- * where unsigned(X) is make_unsigned::type and signed(X) is
- * make_signed::type
+ * {
+ * unsigned_soft(T'),
+ * unsigned_soft(U'),
+ * signed_soft(T'),
+ * signed_soft(U'),
+ * T',
+ * U',
+ * unsigned int,
+ * int
+ * }
+ * where unsigned_soft(X) is make_unsigned_soft::type and
+ * signed_soft(X) is make_signed_soft::type (these are all
+ * generally necessary to cover the various integral promotion cases)
* else
* define the set of NominalCandidates to be
* { T', U' }
@@ -231,22 +264,20 @@ template<
class T, class U,
class V = typename remove_cv< typename remove_reference::type >::type,
class W = typename remove_cv< typename remove_reference::type >::type,
- bool = is_signable_integral::value && is_signable_integral::value
+ bool = is_integral_or_enum::value && is_integral_or_enum::value
>
-struct nominal_candidates;
-
-template< class T, class U, class V, class W >
-struct nominal_candidates< T, U, V, W, false >
+struct nominal_candidates
{ typedef mpl::vector2 type; };
template< class T, class U, class V, class W >
struct nominal_candidates< T, U, V, W, true >
{
- typedef mpl::vector4<
- typename make_unsigned::type,
- typename make_unsigned::type,
- typename make_signed::type,
- typename make_signed::type
+ typedef boost::mpl::vector8<
+ typename make_unsigned_soft::type,
+ typename make_unsigned_soft::type,
+ typename make_signed_soft::type,
+ typename make_signed_soft::type,
+ V, W, unsigned int, int
> type;
};
diff --git a/test/check_type.hpp b/test/check_type.hpp
index 700551a..33ed399 100644
--- a/test/check_type.hpp
+++ b/test/check_type.hpp
@@ -40,6 +40,32 @@ do{\
<< BOOST_STRINGIZE(expression) << "\"");\
}while(0)
+#define BOOST_CHECK_TYPE3(type_expression, type_expression_suffix, expected_type)\
+do{\
+ if(!::boost::is_same< type_expression, type_expression_suffix, expected_type >::value){\
+ BOOST_CHECK_MESSAGE(false, "The expression: \"" << BOOST_STRINGIZE(expression)\
+ << "\" did not have the expected type:\n\tevaluating: boost::is_same<"\
+ << BOOST_STRINGIZE((type_expression, type_expression_suffix)) << ", " << BOOST_STRINGIZE(expected_type)\
+ << ">" << "\n\tfound: "\
+ << typeid(::boost::is_same< type_expression, type_expression_suffix, expected_type >).name());\
+ }else\
+ BOOST_CHECK_MESSAGE(true, "Validating Type Expression: \""\
+ << BOOST_STRINGIZE(expression) << "\"");\
+}while(0)
+
+#define BOOST_CHECK_TYPE4(type_expression, suffix1, suffix2, expected_type)\
+do{\
+ if(!::boost::is_same< type_expression, suffix1, suffix2, expected_type >::value){\
+ BOOST_CHECK_MESSAGE(false, "The expression: \"" << BOOST_STRINGIZE(expression)\
+ << "\" did not have the expected type:\n\tevaluating: boost::is_same<"\
+ << BOOST_STRINGIZE((type_expression, suffix1, suffix2)) << ", " << BOOST_STRINGIZE(expected_type)\
+ << ">" << "\n\tfound: "\
+ << typeid(::boost::is_same< type_expression, suffix1, suffix2, expected_type >).name());\
+ }else\
+ BOOST_CHECK_MESSAGE(true, "Validating Type Expression: \""\
+ << BOOST_STRINGIZE(expression) << "\"");\
+}while(0)
+
#endif
diff --git a/test/common_type_2_test.cpp b/test/common_type_2_test.cpp
new file mode 100644
index 0000000..f878133
--- /dev/null
+++ b/test/common_type_2_test.cpp
@@ -0,0 +1,212 @@
+// common_type_test.cpp ----------------------------------------------------//
+
+// Copyright 2010 Beman Dawes
+
+// Distributed under the Boost Software License, Version 1.0.
+// See http://www.boost.org/LICENSE_1_0.txt
+
+#define BOOST_COMMON_TYPE_DONT_USE_TYPEOF 1
+
+#include "test.hpp"
+#include "check_type.hpp"
+#ifdef TEST_STD
+# include
+#else
+# include
+#endif
+#include
+
+#ifdef BOOST_INTEL
+#pragma warning(disable: 304 383)
+#endif
+
+struct C1 {};
+
+struct C2 {};
+
+
+struct C3 : C2 {};
+struct C1C2 {
+ C1C2() {}
+ C1C2(C1 const&) {}
+ C1C2(C2 const&) {}
+ C1C2& operator=(C1C2 const&) {
+ return *this;
+ }
+};
+
+template
+void proc2(typename boost::common_type::type const& ) {}
+
+template
+void proc3(typename boost::common_type::type const& ) {}
+
+template
+void assignation_2() {
+typedef typename boost::common_type::type AC;
+ A a;
+ C c;
+ AC ac;
+ ac=a;
+ ac=c;
+
+ proc2(a);
+ proc2(c);
+
+}
+
+template
+void assignation_3() {
+typedef typename boost::common_type::type ABC;
+ A a;
+ B b;
+ C c;
+ ABC abc;
+
+ abc=a;
+ abc=b;
+ abc=c;
+
+ proc3(a);
+ proc3(b);
+ proc3(c);
+}
+
+C1C2 c1c2;
+C1 c1;
+
+int f(C1C2 ) { return 1;}
+int f(C1 ) { return 2;}
+template
+OSTREAM& operator<<(OSTREAM& os, C1 const&) {return os;}
+
+C1C2& declval_C1C2() {return c1c2;}
+C1& declval_C1(){return c1;}
+bool declval_bool(){return true;}
+
+
+TT_TEST_BEGIN(common_type)
+{
+ assignation_2();
+ typedef tt::common_type::type T1;
+ typedef tt::common_type::type T2;
+ typedef tt::common_type::type T3;
+#if defined(BOOST_NO_DECLTYPE) && !defined(BOOST_COMMON_TYPE_DONT_USE_TYPEOF)
+ // fails if BOOST_COMMON_TYPE_DONT_USE_TYPEOF:
+ typedef tt::common_type::type T4;
+#endif
+ typedef tt::common_type::type T5;
+
+ assignation_2();
+ assignation_2();
+ assignation_2();
+ assignation_3();
+ assignation_3();
+ assignation_3();
+ assignation_3();
+ //assignation_3(); // fails because the common type is the third
+
+ BOOST_CHECK_TYPE(tt::common_type::type, int);
+ BOOST_CHECK_TYPE(tt::common_type::type, char);
+
+ BOOST_CHECK_TYPE3(tt::common_type::type, char);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::ulong_long_type);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned char);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::ulong_long_type);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, short);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::ulong_long_type);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned short);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::ulong_long_type);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::ulong_long_type);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::ulong_long_type);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::ulong_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+
+ BOOST_CHECK_TYPE4(tt::common_type::type, double);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE4(tt::common_type::type, boost::long_long_type);
+#endif
+}
+TT_TEST_END
diff --git a/test/common_type_test.cpp b/test/common_type_test.cpp
index 22a0fd0..bd1a54a 100644
--- a/test/common_type_test.cpp
+++ b/test/common_type_test.cpp
@@ -103,5 +103,108 @@ TT_TEST_BEGIN(common_type)
assignation_3();
assignation_3();
//assignation_3(); // fails because the common type is the third
+
+ BOOST_CHECK_TYPE(tt::common_type::type, int);
+ BOOST_CHECK_TYPE(tt::common_type::type, char);
+
+ BOOST_CHECK_TYPE3(tt::common_type::type, char);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::ulong_long_type);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned char);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::ulong_long_type);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, short);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::ulong_long_type);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned short);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::ulong_long_type);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::ulong_long_type);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+ BOOST_CHECK_TYPE3(tt::common_type::type, unsigned int);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::ulong_long_type);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::long_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, boost::ulong_long_type);
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+#endif
+ BOOST_CHECK_TYPE3(tt::common_type::type, double);
+
+ BOOST_CHECK_TYPE4(tt::common_type::type, double);
+#ifndef BOOST_NO_LONG_LONG
+ BOOST_CHECK_TYPE4(tt::common_type::type, boost::long_long_type);
+#endif
}
TT_TEST_END
From 902217df2411129a4d26549fddd65002b433f762 Mon Sep 17 00:00:00 2001
From: John Maddock
Date: Thu, 13 Jan 2011 12:14:56 +0000
Subject: [PATCH 05/82] Don't try and redefine macros that are already set.
[SVN r68095]
---
include/boost/type_traits/common_type.hpp | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/include/boost/type_traits/common_type.hpp b/include/boost/type_traits/common_type.hpp
index 74b0363..25c877f 100644
--- a/include/boost/type_traits/common_type.hpp
+++ b/include/boost/type_traits/common_type.hpp
@@ -11,20 +11,20 @@
#include
-#ifdef __SUNPRO_CC
+#if defined(__SUNPRO_CC) && !defined(BOOST_COMMON_TYPE_DONT_USE_TYPEOF)
# define BOOST_COMMON_TYPE_DONT_USE_TYPEOF
#endif
-#ifdef __IBMCPP__
+#if defined(__IBMCPP__) && !defined(BOOST_COMMON_TYPE_DONT_USE_TYPEOF)
# define BOOST_COMMON_TYPE_DONT_USE_TYPEOF
#endif
//----------------------------------------------------------------------------//
-#if defined(BOOST_NO_VARIADIC_TEMPLATES)
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) && !defined(BOOST_COMMON_TYPE_ARITY)
#define BOOST_COMMON_TYPE_ARITY 3
#endif
//----------------------------------------------------------------------------//
-#if defined(BOOST_NO_DECLTYPE) && !defined(BOOST_COMMON_TYPE_DONT_USE_TYPEOF)
+#if defined(BOOST_NO_DECLTYPE) && !defined(BOOST_COMMON_TYPE_DONT_USE_TYPEOF) && !defined(BOOST_TYPEOF_SILENT)
#define BOOST_TYPEOF_SILENT
#include // boost wonders never cease!
#endif
From 6b8890aec8c91d1008306d6958160a62719edcfe Mon Sep 17 00:00:00 2001
From: John Maddock
Date: Wed, 19 Jan 2011 12:49:55 +0000
Subject: [PATCH 06/82] Fix PDF name and PDF index generation.
[SVN r68284]
---
doc/Jamfile.v2 | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2
index 75f627d..31cd750 100644
--- a/doc/Jamfile.v2
+++ b/doc/Jamfile.v2
@@ -14,7 +14,8 @@ if --enable-index in [ modules.peek : ARGV ]
html:on
index.idx
../../..
- enable_index ;
+ enable_index
+ pdf:index.on.type=1 ;
}
else
{
@@ -76,8 +77,10 @@ boostbook standalone
pdf:boost.url.prefix=http://www.boost.org/doc/libs/release/libs/type_traits/doc/html
;
-#install html : ../../../doc/html/boostbook.css ;
-#install ../ : ../../../boost.png ;
+install pdf-install : standalone : PDF . type_traits.pdf ;
+
+
+
From 5c40f50432a997d56ce85ea0abf39aadd95a5862 Mon Sep 17 00:00:00 2001
From: John Maddock
Date: Mon, 7 Feb 2011 16:39:33 +0000
Subject: [PATCH 07/82] Fix non-ASCII character. Fixes #5099.
[SVN r68691]
---
include/boost/type_traits/add_rvalue_reference.hpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/include/boost/type_traits/add_rvalue_reference.hpp b/include/boost/type_traits/add_rvalue_reference.hpp
index 00b723c..2be58f6 100644
--- a/include/boost/type_traits/add_rvalue_reference.hpp
+++ b/include/boost/type_traits/add_rvalue_reference.hpp
@@ -28,7 +28,7 @@
// shall name T&&; otherwise, type shall name T. [ Note: This rule reflects
// the semantics of reference collapsing. For example, when a type T names
// a type T1&, the type add_rvalue_reference::type is not an rvalue
-// reference. —end note ]
+// reference. -end note ]
//----------------------------------------------------------------------------//
namespace boost {
@@ -65,3 +65,4 @@ BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_rvalue_reference,T,typename boost::type_traits_
#include
#endif // BOOST_TYPE_TRAITS_EXT_ADD_RVALUE_REFERENCE__HPP
+
From 104afb9ba4642fe52b8b5fa032a1619731ccd113 Mon Sep 17 00:00:00 2001
From: John Maddock
Date: Thu, 3 Mar 2011 11:23:57 +0000
Subject: [PATCH 08/82] Fix PDF build from within boost-root/doc/pdf.
[SVN r69512]
---
doc/Jamfile.v2 | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2
index 31cd750..096aaeb 100644
--- a/doc/Jamfile.v2
+++ b/doc/Jamfile.v2
@@ -5,6 +5,8 @@
import modules ;
+path-constant here : . ;
+
if --enable-index in [ modules.peek : ARGV ]
{
ECHO "Building the type_traits docs with automatic index generation enabled." ;
@@ -12,10 +14,9 @@ if --enable-index in [ modules.peek : ARGV ]
project : requirements
on pdf:off
html:on
- index.idx
- ../../..
- enable_index
- pdf:index.on.type=1 ;
+ $(here)/index.idx
+ $(here)/../../..
+ enable_index ;
}
else
{
@@ -85,3 +86,4 @@ install pdf-install : standalone : PDF