summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/Boost/src/boost/type_traits')
-rw-r--r--3rdParty/Boost/src/boost/type_traits/add_rvalue_reference.hpp9
-rw-r--r--3rdParty/Boost/src/boost/type_traits/alignment_of.hpp2
-rw-r--r--3rdParty/Boost/src/boost/type_traits/common_type.hpp10
-rw-r--r--3rdParty/Boost/src/boost/type_traits/detail/bool_trait_def.hpp29
-rw-r--r--3rdParty/Boost/src/boost/type_traits/detail/bool_trait_undef.hpp5
-rw-r--r--3rdParty/Boost/src/boost/type_traits/detail/common_type_imp.hpp81
-rw-r--r--3rdParty/Boost/src/boost/type_traits/detail/cv_traits_impl.hpp2
-rw-r--r--3rdParty/Boost/src/boost/type_traits/detail/has_binary_operator.hpp229
-rw-r--r--3rdParty/Boost/src/boost/type_traits/detail/has_postfix_operator.hpp202
-rw-r--r--3rdParty/Boost/src/boost/type_traits/detail/has_prefix_operator.hpp210
-rw-r--r--3rdParty/Boost/src/boost/type_traits/detail/size_t_trait_def.hpp10
-rw-r--r--3rdParty/Boost/src/boost/type_traits/detail/size_t_trait_undef.hpp2
-rw-r--r--3rdParty/Boost/src/boost/type_traits/detail/type_trait_def.hpp10
-rw-r--r--3rdParty/Boost/src/boost/type_traits/detail/type_trait_undef.hpp2
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_bit_and.hpp49
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_bit_and_assign.hpp55
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_bit_or.hpp49
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_bit_or_assign.hpp55
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_bit_xor.hpp49
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_bit_xor_assign.hpp55
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_complement.hpp32
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_dereference.hpp31
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_divides.hpp40
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_divides_assign.hpp47
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_equal_to.hpp49
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_greater.hpp49
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_greater_equal.hpp49
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_left_shift.hpp49
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_left_shift_assign.hpp55
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_less.hpp49
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_less_equal.hpp49
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_logical_and.hpp40
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_logical_not.hpp23
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_logical_or.hpp40
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_minus.hpp60
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_minus_assign.hpp65
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_modulus.hpp49
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_modulus_assign.hpp55
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_multiplies.hpp40
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_multiplies_assign.hpp47
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_negate.hpp25
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_not_equal_to.hpp49
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_nothrow_assign.hpp16
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_nothrow_constructor.hpp24
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_nothrow_copy.hpp24
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_operator.hpp51
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_plus.hpp54
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_plus_assign.hpp66
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_post_decrement.hpp40
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_post_increment.hpp40
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_pre_decrement.hpp40
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_pre_increment.hpp40
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_right_shift.hpp49
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_right_shift_assign.hpp55
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_trivial_assign.hpp17
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_trivial_constructor.hpp8
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_trivial_copy.hpp25
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_trivial_destructor.hpp17
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_unary_minus.hpp25
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_unary_plus.hpp23
-rw-r--r--3rdParty/Boost/src/boost/type_traits/has_virtual_destructor.hpp4
-rw-r--r--3rdParty/Boost/src/boost/type_traits/integral_promotion.hpp20
-rw-r--r--3rdParty/Boost/src/boost/type_traits/intrinsics.hpp170
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_const.hpp4
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_convertible.hpp27
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_empty.hpp16
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_enum.hpp2
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_function.hpp6
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_fundamental.hpp2
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_member_function_pointer.hpp4
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_member_pointer.hpp4
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_pod.hpp14
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_pointer.hpp4
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_union.hpp8
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_unsigned.hpp2
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_virtual_base_of.hpp6
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_volatile.hpp4
-rw-r--r--3rdParty/Boost/src/boost/type_traits/msvc/typeof.hpp4
-rw-r--r--3rdParty/Boost/src/boost/type_traits/promote.hpp2
-rw-r--r--3rdParty/Boost/src/boost/type_traits/remove_cv.hpp3
-rw-r--r--3rdParty/Boost/src/boost/type_traits/remove_pointer.hpp53
-rw-r--r--3rdParty/Boost/src/boost/type_traits/transform_traits.hpp21
-rw-r--r--3rdParty/Boost/src/boost/type_traits/type_with_alignment.hpp10
83 files changed, 2900 insertions, 211 deletions
diff --git a/3rdParty/Boost/src/boost/type_traits/add_rvalue_reference.hpp b/3rdParty/Boost/src/boost/type_traits/add_rvalue_reference.hpp
index 00b723c..f0e9925 100644
--- a/3rdParty/Boost/src/boost/type_traits/add_rvalue_reference.hpp
+++ b/3rdParty/Boost/src/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<T>::type is not an rvalue
-// reference. —end note ]
+// reference. -end note ]
//----------------------------------------------------------------------------//
namespace boost {
@@ -39,15 +39,13 @@ namespace type_traits_detail {
struct add_rvalue_reference_helper
{ typedef T type; };
+#if !defined(BOOST_NO_RVALUE_REFERENCES) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
template <typename T>
struct add_rvalue_reference_helper<T, true>
{
-#if !defined(BOOST_NO_RVALUE_REFERENCES)
typedef T&& type;
-#else
- typedef T type;
-#endif
};
+#endif
template <typename T>
struct add_rvalue_reference_imp
@@ -65,3 +63,4 @@ BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_rvalue_reference,T,typename boost::type_traits_
#include <boost/type_traits/detail/type_trait_undef.hpp>
#endif // BOOST_TYPE_TRAITS_EXT_ADD_RVALUE_REFERENCE__HPP
+
diff --git a/3rdParty/Boost/src/boost/type_traits/alignment_of.hpp b/3rdParty/Boost/src/boost/type_traits/alignment_of.hpp
index 51357ce..e1735dc 100644
--- a/3rdParty/Boost/src/boost/type_traits/alignment_of.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/alignment_of.hpp
@@ -93,7 +93,7 @@ BOOST_TT_AUX_SIZE_T_TRAIT_DEF1(alignment_of,T,::boost::detail::alignment_of_impl
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
template <typename T>
struct alignment_of<T&>
- : alignment_of<T*>
+ : public alignment_of<T*>
{
};
#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/common_type.hpp b/3rdParty/Boost/src/boost/type_traits/common_type.hpp
index 74b0363..2739688 100644
--- a/3rdParty/Boost/src/boost/type_traits/common_type.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/common_type.hpp
@@ -11,20 +11,20 @@
#include <boost/config.hpp>
-#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/typeof/typeof.hpp> // boost wonders never cease!
#endif
@@ -141,7 +141,7 @@ namespace type_traits_detail {
template <class T, class U>
struct common_type<T, U, void>
#endif
- : type_traits_detail::common_type_2<T,U>
+ : public type_traits_detail::common_type_2<T,U>
{ };
diff --git a/3rdParty/Boost/src/boost/type_traits/detail/bool_trait_def.hpp b/3rdParty/Boost/src/boost/type_traits/detail/bool_trait_def.hpp
index 19bb18c..e3c7774 100644
--- a/3rdParty/Boost/src/boost/type_traits/detail/bool_trait_def.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/detail/bool_trait_def.hpp
@@ -8,8 +8,8 @@
// http://www.boost.org/LICENSE_1_0.txt)
// $Source$
-// $Date: 2006-07-12 07:10:22 -0400 (Wed, 12 Jul 2006) $
-// $Revision: 34511 $
+// $Date: 2011-10-09 15:28:33 -0700 (Sun, 09 Oct 2011) $
+// $Revision: 74865 $
#include <boost/type_traits/detail/template_arity_spec.hpp>
#include <boost/type_traits/integral_constant.hpp>
@@ -60,7 +60,7 @@
#endif
#ifndef BOOST_TT_AUX_BOOL_C_BASE
-# define BOOST_TT_AUX_BOOL_C_BASE(C) : ::boost::integral_constant<bool,C>
+# define BOOST_TT_AUX_BOOL_C_BASE(C) : public ::boost::integral_constant<bool,C>
#endif
@@ -68,6 +68,7 @@
template< typename T > struct trait \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
}; \
@@ -80,6 +81,7 @@ BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1,trait) \
template< typename T1, typename T2 > struct trait \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
BOOST_MPL_AUX_LAMBDA_SUPPORT(2,trait,(T1,T2)) \
}; \
@@ -87,10 +89,23 @@ template< typename T1, typename T2 > struct trait \
BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(2,trait) \
/**/
+#define BOOST_TT_AUX_BOOL_TRAIT_DEF3(trait,T1,T2,T3,C) \
+template< typename T1, typename T2, typename T3 > struct trait \
+ BOOST_TT_AUX_BOOL_C_BASE(C) \
+{ \
+public:\
+ BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3,trait,(T1,T2,T3)) \
+}; \
+\
+BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(3,trait) \
+/**/
+
#define BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp,C) \
template<> struct trait< sp > \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(1,trait,(sp)) \
}; \
@@ -100,6 +115,7 @@ template<> struct trait< sp > \
template<> struct trait< sp1,sp2 > \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2,trait,(sp1,sp2)) \
}; \
@@ -108,6 +124,7 @@ template<> struct trait< sp1,sp2 > \
#define BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(trait,sp,C) \
template<> struct trait##_impl< sp > \
{ \
+public:\
BOOST_STATIC_CONSTANT(bool, value = (C)); \
}; \
/**/
@@ -115,6 +132,7 @@ template<> struct trait##_impl< sp > \
#define BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,sp1,sp2,C) \
template<> struct trait##_impl< sp1,sp2 > \
{ \
+public:\
BOOST_STATIC_CONSTANT(bool, value = (C)); \
}; \
/**/
@@ -123,6 +141,7 @@ template<> struct trait##_impl< sp1,sp2 > \
template< param > struct trait< sp > \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
}; \
/**/
@@ -131,6 +150,7 @@ template< param > struct trait< sp > \
template< param1, param2 > struct trait< sp > \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
}; \
/**/
@@ -139,6 +159,7 @@ template< param1, param2 > struct trait< sp > \
template< param > struct trait< sp1,sp2 > \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2,trait,(sp1,sp2)) \
}; \
@@ -148,6 +169,7 @@ template< param > struct trait< sp1,sp2 > \
template< param1, param2 > struct trait< sp1,sp2 > \
BOOST_TT_AUX_BOOL_C_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
}; \
/**/
@@ -155,6 +177,7 @@ template< param1, param2 > struct trait< sp1,sp2 > \
#define BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(param,trait,sp1,sp2,C) \
template< param > struct trait##_impl< sp1,sp2 > \
{ \
+public:\
BOOST_STATIC_CONSTANT(bool, value = (C)); \
}; \
/**/
diff --git a/3rdParty/Boost/src/boost/type_traits/detail/bool_trait_undef.hpp b/3rdParty/Boost/src/boost/type_traits/detail/bool_trait_undef.hpp
index 2259c64..008febe 100644
--- a/3rdParty/Boost/src/boost/type_traits/detail/bool_trait_undef.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/detail/bool_trait_undef.hpp
@@ -8,13 +8,14 @@
// http://www.boost.org/LICENSE_1_0.txt)
// $Source$
-// $Date: 2004-09-02 11:41:37 -0400 (Thu, 02 Sep 2004) $
-// $Revision: 24874 $
+// $Date: 2011-10-09 15:28:33 -0700 (Sun, 09 Oct 2011) $
+// $Revision: 74865 $
#undef BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL
#undef BOOST_TT_AUX_BOOL_C_BASE
#undef BOOST_TT_AUX_BOOL_TRAIT_DEF1
#undef BOOST_TT_AUX_BOOL_TRAIT_DEF2
+#undef BOOST_TT_AUX_BOOL_TRAIT_DEF3
#undef BOOST_TT_AUX_BOOL_TRAIT_SPEC1
#undef BOOST_TT_AUX_BOOL_TRAIT_SPEC2
#undef BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1
diff --git a/3rdParty/Boost/src/boost/type_traits/detail/common_type_imp.hpp b/3rdParty/Boost/src/boost/type_traits/detail/common_type_imp.hpp
index 9e06282..dd530ca 100644
--- a/3rdParty/Boost/src/boost/type_traits/detail/common_type_imp.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/detail/common_type_imp.hpp
@@ -72,22 +72,46 @@ struct propagate_cv< const volatile From, To >
{ typedef To const volatile type; };
/*******************************************************************************
- * struct is_signable_integral<T>
+ * struct is_integral_or_enum<T>
*
* This metafunction determines if T is an integral type which can be made
* signed or unsigned.
******************************************************************************/
template< class T >
-struct is_signable_integral
- : mpl::or_< is_integral<T>, is_enum<T> >
+struct is_integral_or_enum
+ : public mpl::or_< is_integral<T>, is_enum<T> >
{ };
template<>
-struct is_signable_integral< bool >
- : false_type
+struct is_integral_or_enum< bool >
+ : public false_type
{ };
/*******************************************************************************
+ * struct make_unsigned_soft<T>
+ * struct make_signed_soft<T>
+ *
+ * These metafunction are identical to make_unsigned and make_signed,
+ * respetively, except for special-casing bool.
+ ******************************************************************************/
+
+template< class T >
+struct make_unsigned_soft
+ : public make_unsigned<T>
+{ };
+template<>
+struct make_unsigned_soft< bool >
+{ typedef bool type; };
+
+template< class T >
+struct make_signed_soft
+ : public make_signed<T>
+{ };
+template<>
+struct make_signed_soft< bool >
+{ typedef bool type; };
+
+/*******************************************************************************
* struct sizeof_t<N>
* typedef ... yes_type
* typedef ... no_type
@@ -127,7 +151,7 @@ yes_type rvalue_test(...);
template< class First, class Last, std::size_t Index >
struct conversion_test_overloads_iterate
- : conversion_test_overloads_iterate<
+ : public conversion_test_overloads_iterate<
typename mpl::next< First >::type, Last, Index + 1
>
{
@@ -144,7 +168,7 @@ struct conversion_test_overloads_iterate< Last, Last, Index >
template< class Sequence >
struct conversion_test_overloads
- : conversion_test_overloads_iterate<
+ : public conversion_test_overloads_iterate<
typename mpl::begin< Sequence >::type,
typename mpl::end< Sequence >::type,
0
@@ -163,7 +187,7 @@ template<
int N = mpl::size< Sequence >::value
>
struct select
- : mpl::at_c< Sequence, Index >
+ : public mpl::at_c< Sequence, Index >
{ };
template< class Sequence, int N >
struct select< Sequence, N, N >
@@ -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<X>::type and signed(X) is
- * make_signed<X>::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<X>::type and
+ * signed_soft(X) is make_signed_soft<X>::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<T>::type >::type,
class W = typename remove_cv< typename remove_reference<U>::type >::type,
- bool = is_signable_integral<V>::value && is_signable_integral<W>::value
+ bool = is_integral_or_enum<V>::value && is_integral_or_enum<W>::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<V,W> type; };
template< class T, class U, class V, class W >
struct nominal_candidates< T, U, V, W, true >
{
- typedef mpl::vector4<
- typename make_unsigned<V>::type,
- typename make_unsigned<W>::type,
- typename make_signed<V>::type,
- typename make_signed<W>::type
+ typedef boost::mpl::vector8<
+ typename make_unsigned_soft<V>::type,
+ typename make_unsigned_soft<W>::type,
+ typename make_signed_soft<V>::type,
+ typename make_signed_soft<W>::type,
+ V, W, unsigned int, int
> type;
};
@@ -262,7 +293,7 @@ struct nominal_candidates< T, U, V*, W*, false >
template<class T, class U, bool b>
struct common_type_dispatch_on_rvalueness
- : deduce_common_type< T, U, typename nominal_candidates<T,U>::type >
+ : public deduce_common_type< T, U, typename nominal_candidates<T,U>::type >
{ };
template< class T, class U >
@@ -285,7 +316,7 @@ public:
template< class T, class U >
struct common_type_impl
- : common_type_dispatch_on_rvalueness<T,U, sizeof( ::boost::detail_type_traits_common_type::rvalue_test(
+ : public common_type_dispatch_on_rvalueness<T,U, sizeof( ::boost::detail_type_traits_common_type::rvalue_test(
declval< bool >() ? declval<T>() : declval<U>() ) ) == sizeof( yes_type ) >
{ };
diff --git a/3rdParty/Boost/src/boost/type_traits/detail/cv_traits_impl.hpp b/3rdParty/Boost/src/boost/type_traits/detail/cv_traits_impl.hpp
index b3fa595..ed20c9d 100644
--- a/3rdParty/Boost/src/boost/type_traits/detail/cv_traits_impl.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/detail/cv_traits_impl.hpp
@@ -77,7 +77,7 @@ namespace detail {
// Use the implementation above for non function pointers
template <typename T, unsigned Select
= (unsigned)sizeof(::boost::type_traits::gcc8503::mini_funcptr_tester((T)0)) >
-struct cv_traits_imp : ::boost::type_traits::gcc8503::cv_traits_imp<T> { };
+struct cv_traits_imp : public ::boost::type_traits::gcc8503::cv_traits_imp<T> { };
// Functions are never cv-qualified
template <typename T> struct cv_traits_imp<T*,1>
diff --git a/3rdParty/Boost/src/boost/type_traits/detail/has_binary_operator.hpp b/3rdParty/Boost/src/boost/type_traits/detail/has_binary_operator.hpp
new file mode 100644
index 0000000..9257bc2
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/detail/has_binary_operator.hpp
@@ -0,0 +1,229 @@
+// (C) Copyright 2009-2011 Frederic Bron, Robert Stewart, Steven Watanabe & Roman Perepelitsa.
+//
+// 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.
+
+#include <boost/config.hpp>
+#include <boost/type_traits/ice.hpp>
+#include <boost/type_traits/integral_constant.hpp>
+#include <boost/type_traits/is_base_of.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/type_traits/is_fundamental.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_void.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/remove_pointer.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+// cannot include this header without getting warnings of the kind:
+// gcc:
+// warning: value computed is not used
+// warning: comparison between signed and unsigned integer expressions
+// msvc:
+// warning C4018: '<' : signed/unsigned mismatch
+// warning C4244: '+=' : conversion from 'double' to 'char', possible loss of data
+// warning C4547: '*' : operator before comma has no effect; expected operator with side-effect
+// warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
+// warning C4804: '<' : unsafe use of type 'bool' in operation
+// warning C4805: '==' : unsafe mix of type 'bool' and type 'char' in operation
+// cannot find another implementation -> declared as system header to suppress these warnings.
+#if defined(__GNUC__) && ((__GNUC__==3 && __GNUC_MINOR__>=1) || (__GNUC__>3))
+# pragma GCC system_header
+#elif defined(BOOST_MSVC)
+# pragma warning ( push )
+# pragma warning ( disable : 4018 4244 4547 4800 4804 4805 4913 )
+#endif
+
+namespace boost {
+namespace detail {
+
+// This namespace ensures that argument-dependent name lookup does not mess things up.
+namespace BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) {
+
+// 1. a function to have an instance of type T without requiring T to be default
+// constructible
+template <typename T> T &make();
+
+
+// 2. we provide our operator definition for types that do not have one already
+
+// a type returned from operator BOOST_TT_TRAIT_OP when no such operator is
+// found in the type's own namespace (our own operator is used) so that we have
+// a means to know that our operator was used
+struct no_operator { };
+
+// this class allows implicit conversions and makes the following operator
+// definition less-preferred than any other such operators that might be found
+// via argument-dependent name lookup
+struct any { template <class T> any(T const&); };
+
+// when operator BOOST_TT_TRAIT_OP is not available, this one is used
+no_operator operator BOOST_TT_TRAIT_OP (const any&, const any&);
+
+
+// 3. checks if the operator returns void or not
+// conditions: Lhs!=void and Rhs!=void
+
+// we first redefine "operator," so that we have no compilation error if
+// operator BOOST_TT_TRAIT_OP returns void and we can use the return type of
+// (lhs BOOST_TT_TRAIT_OP rhs, returns_void_t()) to deduce if
+// operator BOOST_TT_TRAIT_OP returns void or not:
+// - operator BOOST_TT_TRAIT_OP returns void -> (lhs BOOST_TT_TRAIT_OP rhs, returns_void_t()) returns returns_void_t
+// - operator BOOST_TT_TRAIT_OP returns !=void -> (lhs BOOST_TT_TRAIT_OP rhs, returns_void_t()) returns int
+struct returns_void_t { };
+template <typename T> int operator,(const T&, returns_void_t);
+template <typename T> int operator,(const volatile T&, returns_void_t);
+
+// this intermediate trait has member value of type bool:
+// - value==true -> operator BOOST_TT_TRAIT_OP returns void
+// - value==false -> operator BOOST_TT_TRAIT_OP does not return void
+template < typename Lhs, typename Rhs >
+struct operator_returns_void {
+ // overloads of function returns_void make the difference
+ // yes_type and no_type have different size by construction
+ static ::boost::type_traits::yes_type returns_void(returns_void_t);
+ static ::boost::type_traits::no_type returns_void(int);
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(::boost::type_traits::yes_type)==sizeof(returns_void((make<Lhs>() BOOST_TT_TRAIT_OP make<Rhs>(),returns_void_t())))));
+};
+
+
+// 4. checks if the return type is Ret or Ret==dont_care
+// conditions: Lhs!=void and Rhs!=void
+
+struct dont_care { };
+
+template < typename Lhs, typename Rhs, typename Ret, bool Returns_void >
+struct operator_returns_Ret;
+
+template < typename Lhs, typename Rhs >
+struct operator_returns_Ret < Lhs, Rhs, dont_care, true > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Lhs, typename Rhs >
+struct operator_returns_Ret < Lhs, Rhs, dont_care, false > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Lhs, typename Rhs >
+struct operator_returns_Ret < Lhs, Rhs, void, true > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Lhs, typename Rhs >
+struct operator_returns_Ret < Lhs, Rhs, void, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Lhs, typename Rhs, typename Ret >
+struct operator_returns_Ret < Lhs, Rhs, Ret, true > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+// otherwise checks if it is convertible to Ret using the sizeof trick
+// based on overload resolution
+// condition: Ret!=void and Ret!=dont_care and the operator does not return void
+template < typename Lhs, typename Rhs, typename Ret >
+struct operator_returns_Ret < Lhs, Rhs, Ret, false > {
+ static ::boost::type_traits::yes_type is_convertible_to_Ret(Ret); // this version is preferred for types convertible to Ret
+ static ::boost::type_traits::no_type is_convertible_to_Ret(...); // this version is used otherwise
+
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(is_convertible_to_Ret(make<Lhs>() BOOST_TT_TRAIT_OP make<Rhs>()))==sizeof(::boost::type_traits::yes_type)));
+};
+
+
+// 5. checks for operator existence
+// condition: Lhs!=void and Rhs!=void
+
+// checks if our definition of operator BOOST_TT_TRAIT_OP is used or an other
+// existing one;
+// this is done with redefinition of "operator," that returns no_operator or has_operator
+struct has_operator { };
+no_operator operator,(no_operator, has_operator);
+
+template < typename Lhs, typename Rhs >
+struct operator_exists {
+ static ::boost::type_traits::yes_type check(has_operator); // this version is preferred when operator exists
+ static ::boost::type_traits::no_type check(no_operator); // this version is used otherwise
+
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(check(((make<Lhs>() BOOST_TT_TRAIT_OP make<Rhs>()),make<has_operator>())))==sizeof(::boost::type_traits::yes_type)));
+};
+
+
+// 6. main trait: to avoid any compilation error, this class behaves
+// differently when operator BOOST_TT_TRAIT_OP(Lhs, Rhs) is forbidden by the
+// standard.
+// Forbidden_if is a bool that is:
+// - true when the operator BOOST_TT_TRAIT_OP(Lhs, Rhs) is forbidden by the standard
+// (would yield compilation error if used)
+// - false otherwise
+template < typename Lhs, typename Rhs, typename Ret, bool Forbidden_if >
+struct trait_impl1;
+
+template < typename Lhs, typename Rhs, typename Ret >
+struct trait_impl1 < Lhs, Rhs, Ret, true > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Lhs, typename Rhs, typename Ret >
+struct trait_impl1 < Lhs, Rhs, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool,
+ value = (
+ ::boost::type_traits::ice_and<
+ operator_exists < Lhs, Rhs >::value,
+ operator_returns_Ret < Lhs, Rhs, Ret, operator_returns_void < Lhs, Rhs >::value >::value
+ >::value
+ )
+ );
+};
+
+// some specializations needs to be declared for the special void case
+template < typename Rhs, typename Ret >
+struct trait_impl1 < void, Rhs, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Lhs, typename Ret >
+struct trait_impl1 < Lhs, void, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Ret >
+struct trait_impl1 < void, void, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+// defines some typedef for convenience
+template < typename Lhs, typename Rhs, typename Ret >
+struct trait_impl {
+ typedef typename ::boost::remove_reference<Lhs>::type Lhs_noref;
+ typedef typename ::boost::remove_reference<Rhs>::type Rhs_noref;
+ typedef typename ::boost::remove_cv<Lhs_noref>::type Lhs_nocv;
+ typedef typename ::boost::remove_cv<Rhs_noref>::type Rhs_nocv;
+ typedef typename ::boost::remove_cv< typename ::boost::remove_reference< typename ::boost::remove_pointer<Lhs_noref>::type >::type >::type Lhs_noptr;
+ typedef typename ::boost::remove_cv< typename ::boost::remove_reference< typename ::boost::remove_pointer<Rhs_noref>::type >::type >::type Rhs_noptr;
+ BOOST_STATIC_CONSTANT(bool, value = (trait_impl1 < Lhs_noref, Rhs_noref, Ret, BOOST_TT_FORBIDDEN_IF >::value));
+};
+
+} // namespace impl
+} // namespace detail
+
+// this is the accessible definition of the trait to end user
+BOOST_TT_AUX_BOOL_TRAIT_DEF3(BOOST_TT_TRAIT_NAME, Lhs, Rhs=Lhs, Ret=::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::dont_care, (::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::trait_impl < Lhs, Rhs, Ret >::value))
+
+} // namespace boost
+
+#if defined(BOOST_MSVC)
+# pragma warning ( pop )
+#endif
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
diff --git a/3rdParty/Boost/src/boost/type_traits/detail/has_postfix_operator.hpp b/3rdParty/Boost/src/boost/type_traits/detail/has_postfix_operator.hpp
new file mode 100644
index 0000000..5c52b07
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/detail/has_postfix_operator.hpp
@@ -0,0 +1,202 @@
+// (C) Copyright 2009-2011 Frederic Bron, Robert Stewart, Steven Watanabe & Roman Perepelitsa.
+//
+// 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.
+
+#include <boost/config.hpp>
+#include <boost/type_traits/ice.hpp>
+#include <boost/type_traits/integral_constant.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_fundamental.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_void.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/remove_pointer.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+// avoid warnings
+#if defined(__GNUC__) && ((__GNUC__==3 && __GNUC_MINOR__>=1) || (__GNUC__>3))
+# pragma GCC system_header
+#elif defined(BOOST_MSVC)
+# pragma warning ( push )
+# pragma warning ( disable : 4244 4913 )
+#endif
+
+namespace boost {
+namespace detail {
+
+// This namespace ensures that argument-dependent name lookup does not mess things up.
+namespace BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) {
+
+// 1. a function to have an instance of type T without requiring T to be default
+// constructible
+template <typename T> T &make();
+
+
+// 2. we provide our operator definition for types that do not have one already
+
+// a type returned from operator BOOST_TT_TRAIT_OP when no such operator is
+// found in the type's own namespace (our own operator is used) so that we have
+// a means to know that our operator was used
+struct no_operator { };
+
+// this class allows implicit conversions and makes the following operator
+// definition less-preferred than any other such operators that might be found
+// via argument-dependent name lookup
+struct any { template <class T> any(T const&); };
+
+// when operator BOOST_TT_TRAIT_OP is not available, this one is used
+no_operator operator BOOST_TT_TRAIT_OP (const any&, int);
+
+
+// 3. checks if the operator returns void or not
+// conditions: Lhs!=void
+
+// we first redefine "operator," so that we have no compilation error if
+// operator BOOST_TT_TRAIT_OP returns void and we can use the return type of
+// (lhs BOOST_TT_TRAIT_OP, returns_void_t()) to deduce if
+// operator BOOST_TT_TRAIT_OP returns void or not:
+// - operator BOOST_TT_TRAIT_OP returns void -> (lhs BOOST_TT_TRAIT_OP, returns_void_t()) returns returns_void_t
+// - operator BOOST_TT_TRAIT_OP returns !=void -> (lhs BOOST_TT_TRAIT_OP, returns_void_t()) returns int
+struct returns_void_t { };
+template <typename T> int operator,(const T&, returns_void_t);
+template <typename T> int operator,(const volatile T&, returns_void_t);
+
+// this intermediate trait has member value of type bool:
+// - value==true -> operator BOOST_TT_TRAIT_OP returns void
+// - value==false -> operator BOOST_TT_TRAIT_OP does not return void
+template < typename Lhs >
+struct operator_returns_void {
+ // overloads of function returns_void make the difference
+ // yes_type and no_type have different size by construction
+ static ::boost::type_traits::yes_type returns_void(returns_void_t);
+ static ::boost::type_traits::no_type returns_void(int);
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(::boost::type_traits::yes_type)==sizeof(returns_void((make<Lhs>() BOOST_TT_TRAIT_OP,returns_void_t())))));
+};
+
+
+// 4. checks if the return type is Ret or Ret==dont_care
+// conditions: Lhs!=void
+
+struct dont_care { };
+
+template < typename Lhs, typename Ret, bool Returns_void >
+struct operator_returns_Ret;
+
+template < typename Lhs >
+struct operator_returns_Ret < Lhs, dont_care, true > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Lhs >
+struct operator_returns_Ret < Lhs, dont_care, false > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Lhs >
+struct operator_returns_Ret < Lhs, void, true > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Lhs >
+struct operator_returns_Ret < Lhs, void, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Lhs, typename Ret >
+struct operator_returns_Ret < Lhs, Ret, true > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+// otherwise checks if it is convertible to Ret using the sizeof trick
+// based on overload resolution
+// condition: Ret!=void and Ret!=dont_care and the operator does not return void
+template < typename Lhs, typename Ret >
+struct operator_returns_Ret < Lhs, Ret, false > {
+ static ::boost::type_traits::yes_type is_convertible_to_Ret(Ret); // this version is preferred for types convertible to Ret
+ static ::boost::type_traits::no_type is_convertible_to_Ret(...); // this version is used otherwise
+
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(is_convertible_to_Ret(make<Lhs>() BOOST_TT_TRAIT_OP))==sizeof(::boost::type_traits::yes_type)));
+};
+
+
+// 5. checks for operator existence
+// condition: Lhs!=void
+
+// checks if our definition of operator BOOST_TT_TRAIT_OP is used or an other
+// existing one;
+// this is done with redefinition of "operator," that returns no_operator or has_operator
+struct has_operator { };
+no_operator operator,(no_operator, has_operator);
+
+template < typename Lhs >
+struct operator_exists {
+ static ::boost::type_traits::yes_type check(has_operator); // this version is preferred when operator exists
+ static ::boost::type_traits::no_type check(no_operator); // this version is used otherwise
+
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(check(((make<Lhs>() BOOST_TT_TRAIT_OP),make<has_operator>())))==sizeof(::boost::type_traits::yes_type)));
+};
+
+
+// 6. main trait: to avoid any compilation error, this class behaves
+// differently when operator BOOST_TT_TRAIT_OP(Lhs) is forbidden by the
+// standard.
+// Forbidden_if is a bool that is:
+// - true when the operator BOOST_TT_TRAIT_OP(Lhs) is forbidden by the standard
+// (would yield compilation error if used)
+// - false otherwise
+template < typename Lhs, typename Ret, bool Forbidden_if >
+struct trait_impl1;
+
+template < typename Lhs, typename Ret >
+struct trait_impl1 < Lhs, Ret, true > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Lhs, typename Ret >
+struct trait_impl1 < Lhs, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool,
+ value = (
+ ::boost::type_traits::ice_and<
+ operator_exists < Lhs >::value,
+ operator_returns_Ret < Lhs, Ret, operator_returns_void < Lhs >::value >::value
+ >::value
+ )
+ );
+};
+
+// specialization needs to be declared for the special void case
+template < typename Ret >
+struct trait_impl1 < void, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+// defines some typedef for convenience
+template < typename Lhs, typename Ret >
+struct trait_impl {
+ typedef typename ::boost::remove_reference<Lhs>::type Lhs_noref;
+ typedef typename ::boost::remove_cv<Lhs_noref>::type Lhs_nocv;
+ typedef typename ::boost::remove_cv< typename ::boost::remove_reference< typename ::boost::remove_pointer<Lhs_noref>::type >::type >::type Lhs_noptr;
+ BOOST_STATIC_CONSTANT(bool, value = (trait_impl1 < Lhs_noref, Ret, BOOST_TT_FORBIDDEN_IF >::value));
+};
+
+} // namespace impl
+} // namespace detail
+
+// this is the accessible definition of the trait to end user
+BOOST_TT_AUX_BOOL_TRAIT_DEF2(BOOST_TT_TRAIT_NAME, Lhs, Ret=::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::dont_care, (::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::trait_impl< Lhs, Ret >::value))
+
+} // namespace boost
+
+#if defined(BOOST_MSVC)
+# pragma warning ( pop )
+#endif
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
diff --git a/3rdParty/Boost/src/boost/type_traits/detail/has_prefix_operator.hpp b/3rdParty/Boost/src/boost/type_traits/detail/has_prefix_operator.hpp
new file mode 100644
index 0000000..ac30e4d
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/detail/has_prefix_operator.hpp
@@ -0,0 +1,210 @@
+// (C) Copyright 2009-2011 Frederic Bron, Robert Stewart, Steven Watanabe & Roman Perepelitsa.
+//
+// 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.
+
+#include <boost/config.hpp>
+#include <boost/type_traits/ice.hpp>
+#include <boost/type_traits/integral_constant.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_fundamental.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_void.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/remove_pointer.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+// cannot include this header without getting warnings of the kind:
+// gcc:
+// warning: value computed is not used
+// warning: comparison between signed and unsigned integer expressions
+// msvc:
+// warning C4146: unary minus operator applied to unsigned type, result still unsigned
+// warning C4804: '-' : unsafe use of type 'bool' in operation
+// cannot find another implementation -> declared as system header to suppress these warnings.
+#if defined(__GNUC__) && ((__GNUC__==3 && __GNUC_MINOR__>=1) || (__GNUC__>3))
+# pragma GCC system_header
+#elif defined(BOOST_MSVC)
+# pragma warning ( push )
+# pragma warning ( disable : 4146 4804 4913 4244 )
+#endif
+
+namespace boost {
+namespace detail {
+
+// This namespace ensures that argument-dependent name lookup does not mess things up.
+namespace BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) {
+
+// 1. a function to have an instance of type T without requiring T to be default
+// constructible
+template <typename T> T &make();
+
+
+// 2. we provide our operator definition for types that do not have one already
+
+// a type returned from operator BOOST_TT_TRAIT_OP when no such operator is
+// found in the type's own namespace (our own operator is used) so that we have
+// a means to know that our operator was used
+struct no_operator { };
+
+// this class allows implicit conversions and makes the following operator
+// definition less-preferred than any other such operators that might be found
+// via argument-dependent name lookup
+struct any { template <class T> any(T const&); };
+
+// when operator BOOST_TT_TRAIT_OP is not available, this one is used
+no_operator operator BOOST_TT_TRAIT_OP (const any&);
+
+
+// 3. checks if the operator returns void or not
+// conditions: Rhs!=void
+
+// we first redefine "operator," so that we have no compilation error if
+// operator BOOST_TT_TRAIT_OP returns void and we can use the return type of
+// (BOOST_TT_TRAIT_OP rhs, returns_void_t()) to deduce if
+// operator BOOST_TT_TRAIT_OP returns void or not:
+// - operator BOOST_TT_TRAIT_OP returns void -> (BOOST_TT_TRAIT_OP rhs, returns_void_t()) returns returns_void_t
+// - operator BOOST_TT_TRAIT_OP returns !=void -> (BOOST_TT_TRAIT_OP rhs, returns_void_t()) returns int
+struct returns_void_t { };
+template <typename T> int operator,(const T&, returns_void_t);
+template <typename T> int operator,(const volatile T&, returns_void_t);
+
+// this intermediate trait has member value of type bool:
+// - value==true -> operator BOOST_TT_TRAIT_OP returns void
+// - value==false -> operator BOOST_TT_TRAIT_OP does not return void
+template < typename Rhs >
+struct operator_returns_void {
+ // overloads of function returns_void make the difference
+ // yes_type and no_type have different size by construction
+ static ::boost::type_traits::yes_type returns_void(returns_void_t);
+ static ::boost::type_traits::no_type returns_void(int);
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(::boost::type_traits::yes_type)==sizeof(returns_void((BOOST_TT_TRAIT_OP make<Rhs>(),returns_void_t())))));
+};
+
+
+// 4. checks if the return type is Ret or Ret==dont_care
+// conditions: Rhs!=void
+
+struct dont_care { };
+
+template < typename Rhs, typename Ret, bool Returns_void >
+struct operator_returns_Ret;
+
+template < typename Rhs >
+struct operator_returns_Ret < Rhs, dont_care, true > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Rhs >
+struct operator_returns_Ret < Rhs, dont_care, false > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Rhs >
+struct operator_returns_Ret < Rhs, void, true > {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template < typename Rhs >
+struct operator_returns_Ret < Rhs, void, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Rhs, typename Ret >
+struct operator_returns_Ret < Rhs, Ret, true > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+// otherwise checks if it is convertible to Ret using the sizeof trick
+// based on overload resolution
+// condition: Ret!=void and Ret!=dont_care and the operator does not return void
+template < typename Rhs, typename Ret >
+struct operator_returns_Ret < Rhs, Ret, false > {
+ static ::boost::type_traits::yes_type is_convertible_to_Ret(Ret); // this version is preferred for types convertible to Ret
+ static ::boost::type_traits::no_type is_convertible_to_Ret(...); // this version is used otherwise
+
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(is_convertible_to_Ret(BOOST_TT_TRAIT_OP make<Rhs>()))==sizeof(::boost::type_traits::yes_type)));
+};
+
+
+// 5. checks for operator existence
+// condition: Rhs!=void
+
+// checks if our definition of operator BOOST_TT_TRAIT_OP is used or an other
+// existing one;
+// this is done with redefinition of "operator," that returns no_operator or has_operator
+struct has_operator { };
+no_operator operator,(no_operator, has_operator);
+
+template < typename Rhs >
+struct operator_exists {
+ static ::boost::type_traits::yes_type check(has_operator); // this version is preferred when operator exists
+ static ::boost::type_traits::no_type check(no_operator); // this version is used otherwise
+
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(check(((BOOST_TT_TRAIT_OP make<Rhs>()),make<has_operator>())))==sizeof(::boost::type_traits::yes_type)));
+};
+
+
+// 6. main trait: to avoid any compilation error, this class behaves
+// differently when operator BOOST_TT_TRAIT_OP(Rhs) is forbidden by the
+// standard.
+// Forbidden_if is a bool that is:
+// - true when the operator BOOST_TT_TRAIT_OP(Rhs) is forbidden by the standard
+// (would yield compilation error if used)
+// - false otherwise
+template < typename Rhs, typename Ret, bool Forbidden_if >
+struct trait_impl1;
+
+template < typename Rhs, typename Ret >
+struct trait_impl1 < Rhs, Ret, true > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template < typename Rhs, typename Ret >
+struct trait_impl1 < Rhs, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool,
+ value = (
+ ::boost::type_traits::ice_and<
+ operator_exists < Rhs >::value,
+ operator_returns_Ret < Rhs, Ret, operator_returns_void < Rhs >::value >::value
+ >::value
+ )
+ );
+};
+
+// specialization needs to be declared for the special void case
+template < typename Ret >
+struct trait_impl1 < void, Ret, false > {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+// defines some typedef for convenience
+template < typename Rhs, typename Ret >
+struct trait_impl {
+ typedef typename ::boost::remove_reference<Rhs>::type Rhs_noref;
+ typedef typename ::boost::remove_cv<Rhs_noref>::type Rhs_nocv;
+ typedef typename ::boost::remove_cv< typename ::boost::remove_reference< typename ::boost::remove_pointer<Rhs_noref>::type >::type >::type Rhs_noptr;
+ BOOST_STATIC_CONSTANT(bool, value = (trait_impl1 < Rhs_noref, Ret, BOOST_TT_FORBIDDEN_IF >::value));
+};
+
+} // namespace impl
+} // namespace detail
+
+// this is the accessible definition of the trait to end user
+BOOST_TT_AUX_BOOL_TRAIT_DEF2(BOOST_TT_TRAIT_NAME, Rhs, Ret=::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::dont_care, (::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::trait_impl < Rhs, Ret >::value))
+
+} // namespace boost
+
+#if defined(BOOST_MSVC)
+# pragma warning ( pop )
+#endif
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
diff --git a/3rdParty/Boost/src/boost/type_traits/detail/size_t_trait_def.hpp b/3rdParty/Boost/src/boost/type_traits/detail/size_t_trait_def.hpp
index 472c6ac..3be4f70 100644
--- a/3rdParty/Boost/src/boost/type_traits/detail/size_t_trait_def.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/detail/size_t_trait_def.hpp
@@ -8,8 +8,8 @@
// http://www.boost.org/LICENSE_1_0.txt)
// $Source$
-// $Date: 2005-08-25 12:27:28 -0400 (Thu, 25 Aug 2005) $
-// $Revision: 30670 $
+// $Date: 2011-04-25 05:26:48 -0700 (Mon, 25 Apr 2011) $
+// $Revision: 71481 $
#include <boost/type_traits/detail/template_arity_spec.hpp>
#include <boost/type_traits/integral_constant.hpp>
@@ -19,10 +19,10 @@
#include <cstddef>
#if !defined(BOOST_MSVC) || BOOST_MSVC >= 1300
-# define BOOST_TT_AUX_SIZE_T_BASE(C) ::boost::integral_constant<std::size_t,C>
+# define BOOST_TT_AUX_SIZE_T_BASE(C) public ::boost::integral_constant<std::size_t,C>
# define BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) /**/
#else
-# define BOOST_TT_AUX_SIZE_T_BASE(C) ::boost::mpl::size_t<C>
+# define BOOST_TT_AUX_SIZE_T_BASE(C) public ::boost::mpl::size_t<C>
# define BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) \
typedef ::boost::mpl::size_t<C> base_; \
using base_::value; \
@@ -34,6 +34,7 @@
template< typename T > struct trait \
: BOOST_TT_AUX_SIZE_T_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) \
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
}; \
@@ -45,6 +46,7 @@ BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1,trait) \
template<> struct trait<spec> \
: BOOST_TT_AUX_SIZE_T_BASE(C) \
{ \
+public:\
BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) \
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(1,trait,(spec)) \
}; \
diff --git a/3rdParty/Boost/src/boost/type_traits/detail/size_t_trait_undef.hpp b/3rdParty/Boost/src/boost/type_traits/detail/size_t_trait_undef.hpp
index 06a176d..967fd91 100644
--- a/3rdParty/Boost/src/boost/type_traits/detail/size_t_trait_undef.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/detail/size_t_trait_undef.hpp
@@ -8,7 +8,7 @@
// http://www.boost.org/LICENSE_1_0.txt)
// $Source$
-// $Date: 2004-09-02 11:41:37 -0400 (Thu, 02 Sep 2004) $
+// $Date: 2004-09-02 08:41:37 -0700 (Thu, 02 Sep 2004) $
// $Revision: 24874 $
#undef BOOST_TT_AUX_SIZE_T_TRAIT_DEF1
diff --git a/3rdParty/Boost/src/boost/type_traits/detail/type_trait_def.hpp b/3rdParty/Boost/src/boost/type_traits/detail/type_trait_def.hpp
index 644c7ac..224f848 100644
--- a/3rdParty/Boost/src/boost/type_traits/detail/type_trait_def.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/detail/type_trait_def.hpp
@@ -8,8 +8,8 @@
// http://www.boost.org/LICENSE_1_0.txt)
// $Source$
-// $Date: 2004-09-02 11:41:37 -0400 (Thu, 02 Sep 2004) $
-// $Revision: 24874 $
+// $Date: 2011-04-25 05:26:48 -0700 (Mon, 25 Apr 2011) $
+// $Revision: 71481 $
#include <boost/type_traits/detail/template_arity_spec.hpp>
#include <boost/mpl/aux_/lambda_support.hpp>
@@ -17,6 +17,7 @@
#define BOOST_TT_AUX_TYPE_TRAIT_DEF1(trait,T,result) \
template< typename T > struct trait \
{ \
+public:\
typedef result type; \
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
}; \
@@ -27,6 +28,7 @@ BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1,trait) \
#define BOOST_TT_AUX_TYPE_TRAIT_SPEC1(trait,spec,result) \
template<> struct trait<spec> \
{ \
+public:\
typedef result type; \
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(1,trait,(spec)) \
}; \
@@ -35,6 +37,7 @@ template<> struct trait<spec> \
#define BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1(trait,spec,result) \
template<> struct trait##_impl<spec> \
{ \
+public:\
typedef result type; \
}; \
/**/
@@ -42,6 +45,7 @@ template<> struct trait##_impl<spec> \
#define BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(param,trait,spec,result) \
template< param > struct trait<spec> \
{ \
+public:\
typedef result type; \
}; \
/**/
@@ -49,6 +53,7 @@ template< param > struct trait<spec> \
#define BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(param1,param2,trait,spec,result) \
template< param1, param2 > struct trait<spec> \
{ \
+public:\
typedef result; \
}; \
/**/
@@ -56,6 +61,7 @@ template< param1, param2 > struct trait<spec> \
#define BOOST_TT_AUX_TYPE_TRAIT_IMPL_PARTIAL_SPEC1_1(param,trait,spec,result) \
template< param > struct trait##_impl<spec> \
{ \
+public:\
typedef result type; \
}; \
/**/
diff --git a/3rdParty/Boost/src/boost/type_traits/detail/type_trait_undef.hpp b/3rdParty/Boost/src/boost/type_traits/detail/type_trait_undef.hpp
index 9403b9b..c4f14ff 100644
--- a/3rdParty/Boost/src/boost/type_traits/detail/type_trait_undef.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/detail/type_trait_undef.hpp
@@ -8,7 +8,7 @@
// http://www.boost.org/LICENSE_1_0.txt)
// $Source$
-// $Date: 2004-09-02 11:41:37 -0400 (Thu, 02 Sep 2004) $
+// $Date: 2004-09-02 08:41:37 -0700 (Thu, 02 Sep 2004) $
// $Revision: 24874 $
#undef BOOST_TT_AUX_TYPE_TRAIT_DEF1
diff --git a/3rdParty/Boost/src/boost/type_traits/has_bit_and.hpp b/3rdParty/Boost/src/boost/type_traits/has_bit_and.hpp
new file mode 100644
index 0000000..ee3307f
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_bit_and.hpp
@@ -0,0 +1,49 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_BIT_AND_HPP_INCLUDED
+#define BOOST_TT_HAS_BIT_AND_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_bit_and
+#define BOOST_TT_TRAIT_OP &
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_bit_and_assign.hpp b/3rdParty/Boost/src/boost/type_traits/has_bit_and_assign.hpp
new file mode 100644
index 0000000..5b3112a
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_bit_and_assign.hpp
@@ -0,0 +1,55 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_BIT_AND_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_BIT_AND_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_bit_and_assign
+#define BOOST_TT_TRAIT_OP &=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==fundamental and Lhs==const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_bit_or.hpp b/3rdParty/Boost/src/boost/type_traits/has_bit_or.hpp
new file mode 100644
index 0000000..922b4ce
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_bit_or.hpp
@@ -0,0 +1,49 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_BIT_OR_HPP_INCLUDED
+#define BOOST_TT_HAS_BIT_OR_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_bit_or
+#define BOOST_TT_TRAIT_OP |
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_bit_or_assign.hpp b/3rdParty/Boost/src/boost/type_traits/has_bit_or_assign.hpp
new file mode 100644
index 0000000..5481b92
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_bit_or_assign.hpp
@@ -0,0 +1,55 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_BIT_OR_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_BIT_OR_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_bit_or_assign
+#define BOOST_TT_TRAIT_OP |=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==fundamental and Lhs==const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_bit_xor.hpp b/3rdParty/Boost/src/boost/type_traits/has_bit_xor.hpp
new file mode 100644
index 0000000..883dcf6
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_bit_xor.hpp
@@ -0,0 +1,49 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_BIT_XOR_HPP_INCLUDED
+#define BOOST_TT_HAS_BIT_XOR_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_bit_xor
+#define BOOST_TT_TRAIT_OP ^
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_bit_xor_assign.hpp b/3rdParty/Boost/src/boost/type_traits/has_bit_xor_assign.hpp
new file mode 100644
index 0000000..e2767cc
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_bit_xor_assign.hpp
@@ -0,0 +1,55 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_BIT_XOR_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_BIT_XOR_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_bit_xor_assign
+#define BOOST_TT_TRAIT_OP ^=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==fundamental and Lhs==const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_complement.hpp b/3rdParty/Boost/src/boost/type_traits/has_complement.hpp
new file mode 100644
index 0000000..dafd9f5
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_complement.hpp
@@ -0,0 +1,32 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_COMPLEMENT_HPP_INCLUDED
+#define BOOST_TT_HAS_COMPLEMENT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_complement
+#define BOOST_TT_TRAIT_OP ~
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* pointer */\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ /* fundamental non integral */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_dereference.hpp b/3rdParty/Boost/src/boost/type_traits/has_dereference.hpp
new file mode 100644
index 0000000..fe48e11
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_dereference.hpp
@@ -0,0 +1,31 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_DEREFERENCE_HPP_INCLUDED
+#define BOOST_TT_HAS_DEREFERENCE_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_dereference
+#define BOOST_TT_TRAIT_OP *
+#define BOOST_TT_FORBIDDEN_IF\
+ /* void* or fundamental */\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_divides.hpp b/3rdParty/Boost/src/boost/type_traits/has_divides.hpp
new file mode 100644
index 0000000..277c2da
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_divides.hpp
@@ -0,0 +1,40 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_DIVIDES_HPP_INCLUDED
+#define BOOST_TT_HAS_DIVIDES_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_divides
+#define BOOST_TT_TRAIT_OP /
+#define BOOST_TT_FORBIDDEN_IF\
+ /* pointer with pointer or fundamental */\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_divides_assign.hpp b/3rdParty/Boost/src/boost/type_traits/has_divides_assign.hpp
new file mode 100644
index 0000000..b21a05a
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_divides_assign.hpp
@@ -0,0 +1,47 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_DIVIDES_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_DIVIDES_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_divides_assign
+#define BOOST_TT_TRAIT_OP /=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Lhs==const and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and (Rhs==fundamental or Rhs==pointer) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value,\
+ /* Rhs==pointer and (Lhs==fundamental or Lhs==pointer) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_equal_to.hpp b/3rdParty/Boost/src/boost/type_traits/has_equal_to.hpp
new file mode 100644
index 0000000..c2245c2
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_equal_to.hpp
@@ -0,0 +1,49 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_EQUAL_TO_HPP_INCLUDED
+#define BOOST_TT_HAS_EQUAL_TO_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_equal_to
+#define BOOST_TT_TRAIT_OP ==
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer and Lhs!=base(Rhs) and Rhs!=base(Lhs) and Lhs!=void* and Rhs!=void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_base_of< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_base_of< Rhs_noptr, Lhs_noptr >::value,\
+ ::boost::is_same< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_greater.hpp b/3rdParty/Boost/src/boost/type_traits/has_greater.hpp
new file mode 100644
index 0000000..ce32658
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_greater.hpp
@@ -0,0 +1,49 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_GREATER_HPP_INCLUDED
+#define BOOST_TT_HAS_GREATER_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_greater
+#define BOOST_TT_TRAIT_OP >
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer and Lhs!=base(Rhs) and Rhs!=base(Lhs) and Lhs!=void* and Rhs!=void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_base_of< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_base_of< Rhs_noptr, Lhs_noptr >::value,\
+ ::boost::is_same< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_greater_equal.hpp b/3rdParty/Boost/src/boost/type_traits/has_greater_equal.hpp
new file mode 100644
index 0000000..681685a
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_greater_equal.hpp
@@ -0,0 +1,49 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_GREATER_EQUAL_HPP_INCLUDED
+#define BOOST_TT_HAS_GREATER_EQUAL_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_greater_equal
+#define BOOST_TT_TRAIT_OP >=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer and Lhs!=base(Rhs) and Rhs!=base(Lhs) and Lhs!=void* and Rhs!=void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_base_of< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_base_of< Rhs_noptr, Lhs_noptr >::value,\
+ ::boost::is_same< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_left_shift.hpp b/3rdParty/Boost/src/boost/type_traits/has_left_shift.hpp
new file mode 100644
index 0000000..88205d9
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_left_shift.hpp
@@ -0,0 +1,49 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_LEFT_SHIFT_HPP_INCLUDED
+#define BOOST_TT_HAS_LEFT_SHIFT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_left_shift
+#define BOOST_TT_TRAIT_OP <<
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_left_shift_assign.hpp b/3rdParty/Boost/src/boost/type_traits/has_left_shift_assign.hpp
new file mode 100644
index 0000000..0b3b9b1
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_left_shift_assign.hpp
@@ -0,0 +1,55 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_LEFT_SHIFT_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_LEFT_SHIFT_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_left_shift_assign
+#define BOOST_TT_TRAIT_OP <<=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==fundamental and Lhs==const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_less.hpp b/3rdParty/Boost/src/boost/type_traits/has_less.hpp
new file mode 100644
index 0000000..e1a045e
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_less.hpp
@@ -0,0 +1,49 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_LESS_HPP_INCLUDED
+#define BOOST_TT_HAS_LESS_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_less
+#define BOOST_TT_TRAIT_OP <
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer and Lhs!=base(Rhs) and Rhs!=base(Lhs) and Lhs!=void* and Rhs!=void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_base_of< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_base_of< Rhs_noptr, Lhs_noptr >::value,\
+ ::boost::is_same< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_less_equal.hpp b/3rdParty/Boost/src/boost/type_traits/has_less_equal.hpp
new file mode 100644
index 0000000..c633b8b
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_less_equal.hpp
@@ -0,0 +1,49 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_LESS_EQUAL_HPP_INCLUDED
+#define BOOST_TT_HAS_LESS_EQUAL_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_less_equal
+#define BOOST_TT_TRAIT_OP <=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer and Lhs!=base(Rhs) and Rhs!=base(Lhs) and Lhs!=void* and Rhs!=void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_base_of< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_base_of< Rhs_noptr, Lhs_noptr >::value,\
+ ::boost::is_same< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_logical_and.hpp b/3rdParty/Boost/src/boost/type_traits/has_logical_and.hpp
new file mode 100644
index 0000000..5bfa1c3
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_logical_and.hpp
@@ -0,0 +1,40 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_LOGICAL_AND_HPP_INCLUDED
+#define BOOST_TT_HAS_LOGICAL_AND_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_logical_and
+#define BOOST_TT_TRAIT_OP &&
+#define BOOST_TT_FORBIDDEN_IF\
+ /* pointer with fundamental non convertible to bool */\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< Rhs_nocv, bool >::value >::value\
+ >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< Lhs_nocv, bool >::value >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_logical_not.hpp b/3rdParty/Boost/src/boost/type_traits/has_logical_not.hpp
new file mode 100644
index 0000000..fd99d3c
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_logical_not.hpp
@@ -0,0 +1,23 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_LOGICAL_NOT_HPP_INCLUDED
+#define BOOST_TT_HAS_LOGICAL_NOT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_logical_not
+#define BOOST_TT_TRAIT_OP !
+#define BOOST_TT_FORBIDDEN_IF\
+ false
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_logical_or.hpp b/3rdParty/Boost/src/boost/type_traits/has_logical_or.hpp
new file mode 100644
index 0000000..a4ae6c5
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_logical_or.hpp
@@ -0,0 +1,40 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_LOGICAL_OR_HPP_INCLUDED
+#define BOOST_TT_HAS_LOGICAL_OR_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_logical_or
+#define BOOST_TT_TRAIT_OP ||
+#define BOOST_TT_FORBIDDEN_IF\
+ /* pointer with fundamental non convertible to bool */\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< Rhs_nocv, bool >::value >::value\
+ >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_convertible< Lhs_nocv, bool >::value >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_minus.hpp b/3rdParty/Boost/src/boost/type_traits/has_minus.hpp
new file mode 100644
index 0000000..cc1d06b
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_minus.hpp
@@ -0,0 +1,60 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_MINUS_HPP_INCLUDED
+#define BOOST_TT_HAS_MINUS_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_minus
+#define BOOST_TT_TRAIT_OP -
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental and Rhs!=integral */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value,\
+ /* Lhs==void* and (Rhs==fundamental or Rhs==pointer) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value,\
+ /* Rhs==void* and (Lhs==fundamental or Lhs==pointer) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_void< Rhs_noptr >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value\
+ >::value,\
+ /* Lhs=fundamental and Rhs=pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* two different pointers */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_same< Lhs_nocv, Rhs_nocv >::value >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_minus_assign.hpp b/3rdParty/Boost/src/boost/type_traits/has_minus_assign.hpp
new file mode 100644
index 0000000..84ba359
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_minus_assign.hpp
@@ -0,0 +1,65 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_MINUS_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_MINUS_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_minus_assign
+#define BOOST_TT_TRAIT_OP -=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental and Rhs!=integral */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value,\
+ /* Lhs==void* and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==void* and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_void< Rhs_noptr >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs=fundamental and Rhs=pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* (Lhs==fundamental or Lhs==pointer) and (Rhs==fundamental or Rhs==pointer) and (Lhs==const) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_modulus.hpp b/3rdParty/Boost/src/boost/type_traits/has_modulus.hpp
new file mode 100644
index 0000000..6948728
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_modulus.hpp
@@ -0,0 +1,49 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_MODULUS_HPP_INCLUDED
+#define BOOST_TT_HAS_MODULUS_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_modulus
+#define BOOST_TT_TRAIT_OP %
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_modulus_assign.hpp b/3rdParty/Boost/src/boost/type_traits/has_modulus_assign.hpp
new file mode 100644
index 0000000..f0531f0
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_modulus_assign.hpp
@@ -0,0 +1,55 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_MODULUS_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_MODULUS_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_modulus_assign
+#define BOOST_TT_TRAIT_OP %=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==fundamental and Lhs==const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_multiplies.hpp b/3rdParty/Boost/src/boost/type_traits/has_multiplies.hpp
new file mode 100644
index 0000000..4b578c5
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_multiplies.hpp
@@ -0,0 +1,40 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_MULTIPLIES_HPP_INCLUDED
+#define BOOST_TT_HAS_MULTIPLIES_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_multiplies
+#define BOOST_TT_TRAIT_OP *
+#define BOOST_TT_FORBIDDEN_IF\
+ /* pointer with pointer or fundamental */\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value,\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_multiplies_assign.hpp b/3rdParty/Boost/src/boost/type_traits/has_multiplies_assign.hpp
new file mode 100644
index 0000000..1678b7b
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_multiplies_assign.hpp
@@ -0,0 +1,47 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_MULTIPLIES_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_MULTIPLIES_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_multiplies_assign
+#define BOOST_TT_TRAIT_OP *=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Lhs==const and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and (Rhs==fundamental or Rhs==pointer) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value,\
+ /* Rhs==pointer and (Lhs==fundamental or Lhs==pointer) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_negate.hpp b/3rdParty/Boost/src/boost/type_traits/has_negate.hpp
new file mode 100644
index 0000000..452e54a
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_negate.hpp
@@ -0,0 +1,25 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_NEGATE_HPP_INCLUDED
+#define BOOST_TT_HAS_NEGATE_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_negate
+#define BOOST_TT_TRAIT_OP -
+#define BOOST_TT_FORBIDDEN_IF\
+ /* pointer */\
+ ::boost::is_pointer< Rhs_noref >::value
+
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_not_equal_to.hpp b/3rdParty/Boost/src/boost/type_traits/has_not_equal_to.hpp
new file mode 100644
index 0000000..e7e3700
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_not_equal_to.hpp
@@ -0,0 +1,49 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_NOT_EQUAL_TO_HPP_INCLUDED
+#define BOOST_TT_HAS_NOT_EQUAL_TO_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_not_equal_to
+#define BOOST_TT_TRAIT_OP !=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer and Lhs!=base(Rhs) and Rhs!=base(Lhs) and Lhs!=void* and Rhs!=void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::type_traits::ice_not<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_base_of< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_base_of< Rhs_noptr, Lhs_noptr >::value,\
+ ::boost::is_same< Lhs_noptr, Rhs_noptr >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value\
+ >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_nothrow_assign.hpp b/3rdParty/Boost/src/boost/type_traits/has_nothrow_assign.hpp
index 3cef735..83e5968 100644
--- a/3rdParty/Boost/src/boost/type_traits/has_nothrow_assign.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/has_nothrow_assign.hpp
@@ -20,16 +20,22 @@ namespace detail{
template <class T>
struct has_nothrow_assign_imp{
- BOOST_STATIC_CONSTANT(bool, value =
- (::boost::type_traits::ice_or<
- ::boost::has_trivial_assign<T>::value,
- BOOST_HAS_NOTHROW_ASSIGN(T)
- >::value));
+#ifndef BOOST_HAS_NOTHROW_ASSIGN
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::has_trivial_assign<T>::value);
+#else
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_NOTHROW_ASSIGN(T));
+#endif
};
}
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_assign,T,::boost::detail::has_nothrow_assign_imp<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_assign,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_assign,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_assign,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_assign,void volatile,false)
+#endif
} // namespace boost
diff --git a/3rdParty/Boost/src/boost/type_traits/has_nothrow_constructor.hpp b/3rdParty/Boost/src/boost/type_traits/has_nothrow_constructor.hpp
index e807fd4..3bc4f80 100644
--- a/3rdParty/Boost/src/boost/type_traits/has_nothrow_constructor.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/has_nothrow_constructor.hpp
@@ -20,11 +20,11 @@ namespace detail{
template <class T>
struct has_nothrow_constructor_imp{
- BOOST_STATIC_CONSTANT(bool, value =
- (::boost::type_traits::ice_or<
- ::boost::has_trivial_constructor<T>::value,
- BOOST_HAS_NOTHROW_CONSTRUCTOR(T)
- >::value));
+#ifdef BOOST_HAS_NOTHROW_CONSTRUCTOR
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_NOTHROW_CONSTRUCTOR(T));
+#else
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::has_trivial_constructor<T>::value);
+#endif
};
}
@@ -32,6 +32,20 @@ struct has_nothrow_constructor_imp{
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)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_constructor,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_constructor,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_constructor,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_constructor,void volatile,false)
+#endif
+
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_default_constructor,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_default_constructor,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_default_constructor,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_default_constructor,void volatile,false)
+#endif
+
} // namespace boost
#include <boost/type_traits/detail/bool_trait_undef.hpp>
diff --git a/3rdParty/Boost/src/boost/type_traits/has_nothrow_copy.hpp b/3rdParty/Boost/src/boost/type_traits/has_nothrow_copy.hpp
index c06b4a3..9c3c903 100644
--- a/3rdParty/Boost/src/boost/type_traits/has_nothrow_copy.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/has_nothrow_copy.hpp
@@ -20,11 +20,11 @@ namespace detail{
template <class T>
struct has_nothrow_copy_imp{
- BOOST_STATIC_CONSTANT(bool, value =
- (::boost::type_traits::ice_or<
- ::boost::has_trivial_copy<T>::value,
- BOOST_HAS_NOTHROW_COPY(T)
- >::value));
+#ifdef BOOST_HAS_NOTHROW_COPY
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_NOTHROW_COPY(T));
+#else
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::has_trivial_copy<T>::value);
+#endif
};
}
@@ -32,6 +32,20 @@ struct has_nothrow_copy_imp{
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)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy,void volatile,false)
+#endif
+
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy_constructor,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy_constructor,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy_constructor,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_nothrow_copy_constructor,void volatile,false)
+#endif
+
} // namespace boost
#include <boost/type_traits/detail/bool_trait_undef.hpp>
diff --git a/3rdParty/Boost/src/boost/type_traits/has_operator.hpp b/3rdParty/Boost/src/boost/type_traits/has_operator.hpp
new file mode 100644
index 0000000..c97a90f
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_operator.hpp
@@ -0,0 +1,51 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_OPERATOR_HPP_INCLUDED
+#define BOOST_TT_HAS_OPERATOR_HPP_INCLUDED
+
+#include <boost/type_traits/has_bit_and.hpp>
+#include <boost/type_traits/has_bit_and_assign.hpp>
+#include <boost/type_traits/has_bit_or.hpp>
+#include <boost/type_traits/has_bit_or_assign.hpp>
+#include <boost/type_traits/has_bit_xor.hpp>
+#include <boost/type_traits/has_bit_xor_assign.hpp>
+#include <boost/type_traits/has_complement.hpp>
+#include <boost/type_traits/has_dereference.hpp>
+#include <boost/type_traits/has_divides.hpp>
+#include <boost/type_traits/has_divides_assign.hpp>
+#include <boost/type_traits/has_equal_to.hpp>
+#include <boost/type_traits/has_greater.hpp>
+#include <boost/type_traits/has_greater_equal.hpp>
+#include <boost/type_traits/has_left_shift.hpp>
+#include <boost/type_traits/has_left_shift_assign.hpp>
+#include <boost/type_traits/has_less.hpp>
+#include <boost/type_traits/has_less_equal.hpp>
+#include <boost/type_traits/has_logical_and.hpp>
+#include <boost/type_traits/has_logical_not.hpp>
+#include <boost/type_traits/has_logical_or.hpp>
+#include <boost/type_traits/has_minus.hpp>
+#include <boost/type_traits/has_minus_assign.hpp>
+#include <boost/type_traits/has_modulus.hpp>
+#include <boost/type_traits/has_modulus_assign.hpp>
+#include <boost/type_traits/has_multiplies.hpp>
+#include <boost/type_traits/has_multiplies_assign.hpp>
+#include <boost/type_traits/has_negate.hpp>
+#include <boost/type_traits/has_not_equal_to.hpp>
+#include <boost/type_traits/has_plus.hpp>
+#include <boost/type_traits/has_plus_assign.hpp>
+#include <boost/type_traits/has_post_decrement.hpp>
+#include <boost/type_traits/has_post_increment.hpp>
+#include <boost/type_traits/has_pre_decrement.hpp>
+#include <boost/type_traits/has_pre_increment.hpp>
+#include <boost/type_traits/has_right_shift.hpp>
+#include <boost/type_traits/has_right_shift_assign.hpp>
+#include <boost/type_traits/has_unary_minus.hpp>
+#include <boost/type_traits/has_unary_plus.hpp>
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_plus.hpp b/3rdParty/Boost/src/boost/type_traits/has_plus.hpp
new file mode 100644
index 0000000..70c1200
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_plus.hpp
@@ -0,0 +1,54 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_PLUS_HPP_INCLUDED
+#define BOOST_TT_HAS_PLUS_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_plus
+#define BOOST_TT_TRAIT_OP +
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==void* and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==void* and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_void< Rhs_noptr >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==fundamental and Rhs!=integral */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental and Lhs!=integral */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_plus_assign.hpp b/3rdParty/Boost/src/boost/type_traits/has_plus_assign.hpp
new file mode 100644
index 0000000..6d65204
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_plus_assign.hpp
@@ -0,0 +1,66 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_PLUS_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_PLUS_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_plus_assign
+#define BOOST_TT_TRAIT_OP +=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==void* and Rhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_void< Lhs_noptr >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value\
+ >::value,\
+ /* Rhs==void* and Lhs==fundamental */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_void< Rhs_noptr >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==fundamental and Rhs!=integral */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value,\
+ /* Rhs==pointer and Lhs==fundamental and Lhs!=bool */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_same< Lhs_nocv, bool >::value >::value\
+ >::value,\
+ /* (Lhs==fundamental or Lhs==pointer) and (Rhs==fundamental or Rhs==pointer) and (Lhs==const) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_post_decrement.hpp b/3rdParty/Boost/src/boost/type_traits/has_post_decrement.hpp
new file mode 100644
index 0000000..e277eaf
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_post_decrement.hpp
@@ -0,0 +1,40 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_POST_DECREMENT_HPP_INCLUDED
+#define BOOST_TT_HAS_POST_DECREMENT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_post_decrement
+#define BOOST_TT_TRAIT_OP --
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* bool */\
+ ::boost::is_same< bool, Lhs_nocv >::value,\
+ /* void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_void< Lhs_noptr >::value\
+ >::value,\
+ /* (fundamental or pointer) and const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_postfix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_post_increment.hpp b/3rdParty/Boost/src/boost/type_traits/has_post_increment.hpp
new file mode 100644
index 0000000..085b2d5
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_post_increment.hpp
@@ -0,0 +1,40 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_POST_INCREMENT_HPP_INCLUDED
+#define BOOST_TT_HAS_POST_INCREMENT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_post_increment
+#define BOOST_TT_TRAIT_OP ++
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* bool */\
+ ::boost::is_same< bool, Lhs_nocv >::value,\
+ /* void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_void< Lhs_noptr >::value\
+ >::value,\
+ /* (fundamental or pointer) and const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_postfix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_pre_decrement.hpp b/3rdParty/Boost/src/boost/type_traits/has_pre_decrement.hpp
new file mode 100644
index 0000000..8f08291
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_pre_decrement.hpp
@@ -0,0 +1,40 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_PRE_DECREMENT_HPP_INCLUDED
+#define BOOST_TT_HAS_PRE_DECREMENT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_pre_decrement
+#define BOOST_TT_TRAIT_OP --
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* bool */\
+ ::boost::is_same< bool, Rhs_nocv >::value,\
+ /* void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value,\
+ /* (fundamental or pointer) and const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ ::boost::is_const< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_pre_increment.hpp b/3rdParty/Boost/src/boost/type_traits/has_pre_increment.hpp
new file mode 100644
index 0000000..fcb946d
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_pre_increment.hpp
@@ -0,0 +1,40 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_PRE_INCREMENT_HPP_INCLUDED
+#define BOOST_TT_HAS_PRE_INCREMENT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_pre_increment
+#define BOOST_TT_TRAIT_OP ++
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* bool */\
+ ::boost::is_same< bool, Rhs_nocv >::value,\
+ /* void* */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Rhs_noref >::value,\
+ ::boost::is_void< Rhs_noptr >::value\
+ >::value,\
+ /* (fundamental or pointer) and const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::type_traits::ice_or<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ ::boost::is_const< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_right_shift.hpp b/3rdParty/Boost/src/boost/type_traits/has_right_shift.hpp
new file mode 100644
index 0000000..5735870
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_right_shift.hpp
@@ -0,0 +1,49 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_RIGHT_SHIFT_HPP_INCLUDED
+#define BOOST_TT_HAS_RIGHT_SHIFT_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_right_shift
+#define BOOST_TT_TRAIT_OP >>
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_right_shift_assign.hpp b/3rdParty/Boost/src/boost/type_traits/has_right_shift_assign.hpp
new file mode 100644
index 0000000..0536e71
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_right_shift_assign.hpp
@@ -0,0 +1,55 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_RIGHT_SHIFT_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_RIGHT_SHIFT_ASSIGN_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_right_shift_assign
+#define BOOST_TT_TRAIT_OP >>=
+#define BOOST_TT_FORBIDDEN_IF\
+ ::boost::type_traits::ice_or<\
+ /* Lhs==fundamental and Rhs==fundamental and (Lhs!=integral or Rhs!=integral) */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::type_traits::ice_or<\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Lhs_noref >::value >::value,\
+ ::boost::type_traits::ice_not< ::boost::is_integral< Rhs_noref >::value >::value\
+ >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Rhs==fundamental and Lhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_pointer< Lhs_noref >::value\
+ >::value,\
+ /* Lhs==pointer and Rhs==pointer */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_pointer< Lhs_noref >::value,\
+ ::boost::is_pointer< Rhs_noref >::value\
+ >::value,\
+ /* Lhs==fundamental and Rhs==fundamental and Lhs==const */\
+ ::boost::type_traits::ice_and<\
+ ::boost::is_fundamental< Lhs_nocv >::value,\
+ ::boost::is_fundamental< Rhs_nocv >::value,\
+ ::boost::is_const< Lhs_noref >::value\
+ >::value\
+ >::value
+
+
+#include <boost/type_traits/detail/has_binary_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_trivial_assign.hpp b/3rdParty/Boost/src/boost/type_traits/has_trivial_assign.hpp
index 4179e8d..404b62c 100644
--- a/3rdParty/Boost/src/boost/type_traits/has_trivial_assign.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/has_trivial_assign.hpp
@@ -28,20 +28,27 @@ namespace detail {
template <typename T>
struct has_trivial_assign_impl
{
+#ifdef BOOST_HAS_TRIVIAL_ASSIGN
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_TRIVIAL_ASSIGN(T));
+#else
BOOST_STATIC_CONSTANT(bool, value =
(::boost::type_traits::ice_and<
- ::boost::type_traits::ice_or<
- ::boost::is_pod<T>::value,
- BOOST_HAS_TRIVIAL_ASSIGN(T)
- >::value,
- ::boost::type_traits::ice_not< ::boost::is_const<T>::value >::value,
+ ::boost::is_pod<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_const<T>::value >::value,
::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
>::value));
+#endif
};
} // namespace detail
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_assign,T,::boost::detail::has_trivial_assign_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_assign,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_assign,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_assign,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_assign,void volatile,false)
+#endif
} // namespace boost
diff --git a/3rdParty/Boost/src/boost/type_traits/has_trivial_constructor.hpp b/3rdParty/Boost/src/boost/type_traits/has_trivial_constructor.hpp
index f9ade5d..30dbdd8 100644
--- a/3rdParty/Boost/src/boost/type_traits/has_trivial_constructor.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/has_trivial_constructor.hpp
@@ -24,11 +24,19 @@ namespace detail {
template <typename T>
struct has_trivial_ctor_impl
{
+#ifdef BOOST_HAS_TRIVIAL_CONSTRUCTOR
BOOST_STATIC_CONSTANT(bool, value =
(::boost::type_traits::ice_or<
::boost::is_pod<T>::value,
BOOST_HAS_TRIVIAL_CONSTRUCTOR(T)
>::value));
+#else
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_or<
+ ::boost::is_pod<T>::value,
+ false
+ >::value));
+#endif
};
} // namespace detail
diff --git a/3rdParty/Boost/src/boost/type_traits/has_trivial_copy.hpp b/3rdParty/Boost/src/boost/type_traits/has_trivial_copy.hpp
index 8c75361..ba4d884 100644
--- a/3rdParty/Boost/src/boost/type_traits/has_trivial_copy.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/has_trivial_copy.hpp
@@ -27,14 +27,15 @@ namespace detail {
template <typename T>
struct has_trivial_copy_impl
{
+#ifdef BOOST_HAS_TRIVIAL_COPY
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_TRIVIAL_COPY(T));
+#else
BOOST_STATIC_CONSTANT(bool, value =
(::boost::type_traits::ice_and<
- ::boost::type_traits::ice_or<
- ::boost::is_pod<T>::value,
- BOOST_HAS_TRIVIAL_COPY(T)
- >::value,
- ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
+ ::boost::is_pod<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
>::value));
+#endif
};
} // namespace detail
@@ -42,6 +43,20 @@ struct has_trivial_copy_impl
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)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy,void volatile,false)
+#endif
+
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy_constructor,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy_constructor,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy_constructor,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_copy_constructor,void volatile,false)
+#endif
+
} // namespace boost
#include <boost/type_traits/detail/bool_trait_undef.hpp>
diff --git a/3rdParty/Boost/src/boost/type_traits/has_trivial_destructor.hpp b/3rdParty/Boost/src/boost/type_traits/has_trivial_destructor.hpp
index f2a8ce6..79d7522 100644
--- a/3rdParty/Boost/src/boost/type_traits/has_trivial_destructor.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/has_trivial_destructor.hpp
@@ -24,17 +24,24 @@ namespace detail {
template <typename T>
struct has_trivial_dtor_impl
{
- BOOST_STATIC_CONSTANT(bool, value =
- (::boost::type_traits::ice_or<
- ::boost::is_pod<T>::value,
- BOOST_HAS_TRIVIAL_DESTRUCTOR(T)
- >::value));
+#ifdef BOOST_HAS_TRIVIAL_DESTRUCTOR
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_HAS_TRIVIAL_DESTRUCTOR(T));
+#else
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::is_pod<T>::value);
+#endif
};
} // namespace detail
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_destructor,T,::boost::detail::has_trivial_dtor_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_destructor,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_destructor,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_destructor,void const volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(has_trivial_destructor,void volatile,false)
+#endif
+
} // namespace boost
#include <boost/type_traits/detail/bool_trait_undef.hpp>
diff --git a/3rdParty/Boost/src/boost/type_traits/has_unary_minus.hpp b/3rdParty/Boost/src/boost/type_traits/has_unary_minus.hpp
new file mode 100644
index 0000000..6b3157f
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_unary_minus.hpp
@@ -0,0 +1,25 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_UNARY_MINUS_HPP_INCLUDED
+#define BOOST_TT_HAS_UNARY_MINUS_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_unary_minus
+#define BOOST_TT_TRAIT_OP -
+#define BOOST_TT_FORBIDDEN_IF\
+ /* pointer */\
+ ::boost::is_pointer< Rhs_noref >::value
+
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_unary_plus.hpp b/3rdParty/Boost/src/boost/type_traits/has_unary_plus.hpp
new file mode 100644
index 0000000..a61770f
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/has_unary_plus.hpp
@@ -0,0 +1,23 @@
+// (C) Copyright 2009-2011 Frederic Bron.
+//
+// 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_HAS_UNARY_PLUS_HPP_INCLUDED
+#define BOOST_TT_HAS_UNARY_PLUS_HPP_INCLUDED
+
+#define BOOST_TT_TRAIT_NAME has_unary_plus
+#define BOOST_TT_TRAIT_OP +
+#define BOOST_TT_FORBIDDEN_IF\
+ false
+
+#include <boost/type_traits/detail/has_prefix_operator.hpp>
+
+#undef BOOST_TT_TRAIT_NAME
+#undef BOOST_TT_TRAIT_OP
+#undef BOOST_TT_FORBIDDEN_IF
+
+#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/has_virtual_destructor.hpp b/3rdParty/Boost/src/boost/type_traits/has_virtual_destructor.hpp
index 8f99ff4..b741197 100644
--- a/3rdParty/Boost/src/boost/type_traits/has_virtual_destructor.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/has_virtual_destructor.hpp
@@ -16,7 +16,11 @@
namespace boost {
+#ifdef BOOST_HAS_VIRTUAL_DESTRUCTOR
BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_virtual_destructor,T,BOOST_HAS_VIRTUAL_DESTRUCTOR(T))
+#else
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_virtual_destructor,T,false)
+#endif
} // namespace boost
diff --git a/3rdParty/Boost/src/boost/type_traits/integral_promotion.hpp b/3rdParty/Boost/src/boost/type_traits/integral_promotion.hpp
index a85e243..2109b9c 100644
--- a/3rdParty/Boost/src/boost/type_traits/integral_promotion.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/integral_promotion.hpp
@@ -24,14 +24,14 @@ namespace boost {
namespace type_traits { namespace detail {
// 4.5/2
-template <class T> struct need_promotion : boost::is_enum<T> {};
+template <class T> struct need_promotion : public boost::is_enum<T> {};
// 4.5/1
-template<> struct need_promotion<char > : true_type {};
-template<> struct need_promotion<signed char > : true_type {};
-template<> struct need_promotion<unsigned char > : true_type {};
-template<> struct need_promotion<signed short int > : true_type {};
-template<> struct need_promotion<unsigned short int> : true_type {};
+template<> struct need_promotion<char > : public true_type {};
+template<> struct need_promotion<signed char > : public true_type {};
+template<> struct need_promotion<unsigned char > : public true_type {};
+template<> struct need_promotion<signed short int > : public true_type {};
+template<> struct need_promotion<unsigned short int> : public true_type {};
// Specializations for non-standard types.
@@ -39,7 +39,7 @@ template<> struct need_promotion<unsigned short int> : true_type {};
#define BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE(T) \
template<> struct need_promotion<T> \
- : integral_constant<bool, (sizeof(T) < sizeof(int))> {};
+ : public integral_constant<bool, (sizeof(T) < sizeof(int))> {};
// Same set of integral types as in boost/type_traits/is_integral.hpp.
// Please, keep in sync.
@@ -72,13 +72,13 @@ BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE( __int64)
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
// 4.5/2
-template<> struct need_promotion<wchar_t> : true_type {};
+template<> struct need_promotion<wchar_t> : public true_type {};
#endif
// 4.5/3 (integral bit-field) is not supported.
// 4.5/4
-template<> struct need_promotion<bool> : true_type {};
+template<> struct need_promotion<bool> : public true_type {};
// Get promoted type by index and cv qualifiers.
@@ -171,7 +171,7 @@ struct integral_promotion_impl
template<class T>
struct integral_promotion
- : boost::mpl::eval_if<
+ : public boost::mpl::eval_if<
need_promotion<BOOST_DEDUCED_TYPENAME remove_cv<T>::type>
, integral_promotion_impl<T>
, boost::mpl::identity<T>
diff --git a/3rdParty/Boost/src/boost/type_traits/intrinsics.hpp b/3rdParty/Boost/src/boost/type_traits/intrinsics.hpp
index 9666456..8408ec3 100644
--- a/3rdParty/Boost/src/boost/type_traits/intrinsics.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/intrinsics.hpp
@@ -1,4 +1,3 @@
-
// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
// Use, modification and distribution are subject to the Boost Software License,
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -22,7 +21,7 @@
// (these should largely ignore cv-qualifiers)
// 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_IS_EMPTY(T) should evaluate to true if T is an empty class type (and not a union)
// BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) should evaluate to true if "T x;" has no effect
// BOOST_HAS_TRIVIAL_COPY(T) should evaluate to true if T(t) <==> memcpy
// BOOST_HAS_TRIVIAL_ASSIGN(T) should evaluate to true if t = u <==> memcpy
@@ -33,12 +32,10 @@
// BOOST_HAS_VIRTUAL_DESTRUCTOR(T) should evaluate to true T has a virtual destructor
//
// The following can also be defined: when detected our implementation is greatly simplified.
-// Note that unlike the macros above these do not have default definitions, so we can use
-// #ifdef MACRONAME to detect when these are available.
//
// BOOST_IS_ABSTRACT(T) true if T is an abstract type
// BOOST_IS_BASE_OF(T,U) true if T is a base class of U
-// BOOST_IS_CLASS(T) true if T is a class type
+// BOOST_IS_CLASS(T) true if T is a class type (and not a union)
// BOOST_IS_CONVERTIBLE(T,U) true if T is convertible to U
// BOOST_IS_ENUM(T) true is T is an enum
// BOOST_IS_POLYMORPHIC(T) true if T is a polymorphic type
@@ -89,19 +86,18 @@
# define BOOST_IS_POD(T) (__is_pod(T) && __has_trivial_constructor(T))
# define BOOST_IS_EMPTY(T) __is_empty(T)
# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
-# define BOOST_HAS_TRIVIAL_COPY(T) __has_trivial_copy(T)
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T)
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
-# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
-# define BOOST_HAS_NOTHROW_COPY(T) __has_nothrow_copy(T)
-# define BOOST_HAS_NOTHROW_ASSIGN(T) __has_nothrow_assign(T)
+# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T)|| ( ::boost::is_pod<T>::value && !::boost::is_volatile<T>::value))
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) || ( ::boost::is_pod<T>::value && ! ::boost::is_const<T>::value && !::boost::is_volatile<T>::value))
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) || ::boost::is_pod<T>::value)
+# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) || ::boost::has_trivial_constructor<T>::value)
+# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) || ::boost::has_trivial_copy<T>::value)
+# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) || ::boost::has_trivial_assign<T>::value)
# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
# define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
# define BOOST_IS_CLASS(T) __is_class(T)
-// This one doesn't quite always do the right thing:
-// # define BOOST_IS_CONVERTIBLE(T,U) __is_convertible_to(T,U)
+# define BOOST_IS_CONVERTIBLE(T,U) ((__is_convertible_to(T,U) || is_same<T,U>::value) && !__is_abstract(U))
# define BOOST_IS_ENUM(T) __is_enum(T)
// This one doesn't quite always do the right thing:
// # define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
@@ -127,21 +123,90 @@
# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
#endif
-#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3) && !defined(__GCCXML__)))
+#if defined(BOOST_CLANG) && defined(__has_feature)
+# include <cstddef>
+# include <boost/type_traits/is_same.hpp>
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_volatile.hpp>
+
+# if __has_feature(is_union)
+# define BOOST_IS_UNION(T) __is_union(T)
+# endif
+# if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && __has_feature(is_pod)
+# define BOOST_IS_POD(T) __is_pod(T)
+# endif
+# if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && __has_feature(is_empty)
+# define BOOST_IS_EMPTY(T) __is_empty(T)
+# endif
+# if __has_feature(has_trivial_constructor)
+# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
+# endif
+# if __has_feature(has_trivial_copy)
+# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value && !is_volatile<T>::value)
+# endif
+# if __has_feature(has_trivial_assign)
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value)
+# endif
+# if __has_feature(has_trivial_destructor)
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
+# endif
+# if __has_feature(has_nothrow_constructor)
+# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
+# endif
+# if __has_feature(has_nothrow_copy)
+# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) && !is_volatile<T>::value && !is_reference<T>::value)
+# endif
+# if __has_feature(has_nothrow_assign)
+# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value)
+# endif
+# if __has_feature(has_virtual_destructor)
+# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
+# endif
+# if __has_feature(is_abstract)
+# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
+# endif
+# if __has_feature(is_base_of)
+# define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
+# endif
+# if __has_feature(is_class)
+# define BOOST_IS_CLASS(T) __is_class(T)
+# endif
+# if __has_feature(is_convertible_to)
+# include <boost/type_traits/is_abstract.hpp>
+# define BOOST_IS_CONVERTIBLE(T,U) (__is_convertible_to(T,U) && !::boost::is_abstract<U>::value)
+# endif
+# if __has_feature(is_enum)
+# define BOOST_IS_ENUM(T) __is_enum(T)
+# endif
+# if __has_feature(is_polymorphic)
+# define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
+# endif
+# define BOOST_ALIGNMENT_OF(T) __alignof(T)
+
+# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
+#endif
+
+#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3) && !defined(__GCCXML__))) && !defined(BOOST_CLANG)
# include <boost/type_traits/is_same.hpp>
# include <boost/type_traits/is_reference.hpp>
# include <boost/type_traits/is_volatile.hpp>
+#ifdef BOOST_INTEL
+# define BOOST_INTEL_TT_OPTS || is_pod<T>::value
+#else
+# define BOOST_INTEL_TT_OPTS
+#endif
+
# define BOOST_IS_UNION(T) __is_union(T)
# define BOOST_IS_POD(T) __is_pod(T)
# define BOOST_IS_EMPTY(T) __is_empty(T)
-# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
-# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T)
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
-# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
-# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) && !is_volatile<T>::value && !is_reference<T>::value)
-# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value)
+# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) ((__has_trivial_constructor(T) BOOST_INTEL_TT_OPTS) && ! ::boost::is_volatile<T>::value)
+# define BOOST_HAS_TRIVIAL_COPY(T) ((__has_trivial_copy(T) BOOST_INTEL_TT_OPTS) && !is_reference<T>::value && ! ::boost::is_volatile<T>::value)
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) ((__has_trivial_assign(T) BOOST_INTEL_TT_OPTS) && ! ::boost::is_volatile<T>::value && ! ::boost::is_const<T>::value)
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) BOOST_INTEL_TT_OPTS)
+# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) BOOST_INTEL_TT_OPTS)
+# define BOOST_HAS_NOTHROW_COPY(T) ((__has_nothrow_copy(T) BOOST_INTEL_TT_OPTS) && !is_volatile<T>::value && !is_reference<T>::value)
+# define BOOST_HAS_NOTHROW_ASSIGN(T) ((__has_nothrow_assign(T) BOOST_INTEL_TT_OPTS) && !is_volatile<T>::value && !is_const<T>::value)
# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
@@ -168,8 +233,8 @@
# define BOOST_IS_POD(T) __is_pod(T)
# define BOOST_IS_EMPTY(T) __is_empty(T)
# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
-# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T)
+# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value && !is_volatile<T>::value)
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value)
# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) && !is_volatile<T>::value && !is_reference<T>::value)
@@ -195,13 +260,13 @@
# define BOOST_IS_UNION(T) __is_union(T)
# define BOOST_IS_POD(T) __is_pod(T)
# define BOOST_IS_EMPTY(T) __is_empty(T)
-# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) (__has_trivial_default_constructor(T) || is_void<T>::value)
-# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value || is_void<T>::value)
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value || is_void<T>::value)
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) || is_void<T>::value)
-# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_default_constructor(T) || is_void<T>::value)
-# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value || is_void<T>::value)
-# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value || is_void<T>::value)
+# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) (__has_trivial_default_constructor(T))
+# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value)
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value)
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T))
+# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_default_constructor(T))
+# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value)
+# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value)
# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
@@ -215,53 +280,10 @@
# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
#endif
-#ifndef BOOST_IS_UNION
-# define BOOST_IS_UNION(T) false
-#endif
-
-#ifndef BOOST_IS_POD
-# define BOOST_IS_POD(T) false
-#endif
-
-#ifndef BOOST_IS_EMPTY
-# define BOOST_IS_EMPTY(T) false
-#endif
-
-#ifndef BOOST_HAS_TRIVIAL_CONSTRUCTOR
-# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) false
-#endif
-
-#ifndef BOOST_HAS_TRIVIAL_COPY
-# define BOOST_HAS_TRIVIAL_COPY(T) false
-#endif
-
-#ifndef BOOST_HAS_TRIVIAL_ASSIGN
-# define BOOST_HAS_TRIVIAL_ASSIGN(T) false
-#endif
-
-#ifndef BOOST_HAS_TRIVIAL_DESTRUCTOR
-# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) false
-#endif
-
-#ifndef BOOST_HAS_NOTHROW_CONSTRUCTOR
-# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) false
-#endif
-
-#ifndef BOOST_HAS_NOTHROW_COPY
-# define BOOST_HAS_NOTHROW_COPY(T) false
-#endif
-
-#ifndef BOOST_HAS_NOTHROW_ASSIGN
-# define BOOST_HAS_NOTHROW_ASSIGN(T) false
-#endif
-
-#ifndef BOOST_HAS_VIRTUAL_DESTRUCTOR
-# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) false
-#endif
-
#endif // BOOST_TT_INTRINSICS_HPP_INCLUDED
+
diff --git a/3rdParty/Boost/src/boost/type_traits/is_const.hpp b/3rdParty/Boost/src/boost/type_traits/is_const.hpp
index 99b0f36..f24b71a 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_const.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_const.hpp
@@ -106,7 +106,7 @@ no_type is_const_tester(volatile void *);
template <bool is_ref, bool array>
struct is_const_helper
- : ::boost::type_traits::false_result
+ : public ::boost::type_traits::false_result
{
};
@@ -136,7 +136,7 @@ struct is_const_helper<false,true>
template <typename T>
struct is_const_impl
- : is_const_helper<
+ : public is_const_helper<
is_reference<T>::value
, is_array<T>::value
>::template result_<T>
diff --git a/3rdParty/Boost/src/boost/type_traits/is_convertible.hpp b/3rdParty/Boost/src/boost/type_traits/is_convertible.hpp
index c05c297..0d42c46 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_convertible.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_convertible.hpp
@@ -24,6 +24,7 @@
#ifndef BOOST_NO_IS_ABSTRACT
#include <boost/type_traits/is_abstract.hpp>
#endif
+#include <boost/type_traits/add_rvalue_reference.hpp>
#if defined(__MWERKS__)
#include <boost/type_traits/is_function.hpp>
@@ -68,7 +69,7 @@ struct does_conversion_exist
{
static no_type BOOST_TT_DECL _m_check(...);
static yes_type BOOST_TT_DECL _m_check(To);
- static From _m_from;
+ static typename add_rvalue_reference<From>::type _m_from;
enum { value = sizeof( _m_check(_m_from) ) == sizeof(yes_type) };
};
};
@@ -84,7 +85,7 @@ struct does_conversion_exist<void>
template <typename From, typename To>
struct is_convertible_basic_impl
- : does_conversion_exist<From>::template result_<To>
+ : public does_conversion_exist<From>::template result_<To>
{
};
@@ -106,7 +107,7 @@ struct is_convertible_impl
static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(T);
};
- static From _m_from;
+ static typename add_rvalue_reference<From>::type _m_from;
static bool const value = sizeof( checker<To>::_m_check(_m_from) )
== sizeof(::boost::type_traits::yes_type);
#pragma option pop
@@ -131,7 +132,7 @@ template <typename T> struct checker
template <typename From, typename To>
struct is_convertible_basic_impl
{
- static From _m_from;
+ static typename add_rvalue_reference<From>::type _m_from;
static bool const value = sizeof( boost::detail::checker<To>::_m_check(_m_from, 0) )
== sizeof(::boost::type_traits::yes_type);
};
@@ -161,7 +162,7 @@ struct is_convertible_basic_impl
{
static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
- static From _m_from;
+ static typename add_rvalue_reference<From>::type _m_from;
BOOST_STATIC_CONSTANT(bool, value =
sizeof( _m_check(_m_from, 0) ) == sizeof(::boost::type_traits::yes_type)
@@ -185,7 +186,7 @@ struct is_convertible_basic_impl
template <class T>
static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion, float, T);
static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int, int);
- static From _m_from;
+ static typename add_rvalue_reference<From>::type _m_from;
// Static constants sometime cause the conversion of _m_from to To to be
// called. This doesn't happen with an enum.
@@ -215,7 +216,7 @@ struct is_convertible_basic_impl_aux<From,To,false /*FromIsFunctionRef*/>
{
static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
- static From _m_from;
+ static typename add_rvalue_reference<From>::type _m_from;
BOOST_STATIC_CONSTANT(bool, value =
sizeof( _m_check(_m_from, 0) ) == sizeof(::boost::type_traits::yes_type)
@@ -227,7 +228,7 @@ struct is_convertible_basic_impl_aux<From,To,true /*FromIsFunctionRef*/>
{
static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
- static From _m_from;
+ static typename add_rvalue_reference<From>::type _m_from;
BOOST_STATIC_CONSTANT(bool, value =
sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type)
);
@@ -252,7 +253,7 @@ struct is_convertible_basic_impl
{
static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
- static From _m_from;
+ static typename add_rvalue_reference<From>::type _m_from;
#ifdef BOOST_MSVC
#pragma warning(push)
#pragma warning(disable:4244)
@@ -402,14 +403,14 @@ struct is_convertible_impl_dispatch
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void,To,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void,false)
#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void const,To,false)
BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void volatile,To,false)
BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void const volatile,To,false)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void volatile,true)
-BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const volatile,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const volatile,false)
#endif
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
diff --git a/3rdParty/Boost/src/boost/type_traits/is_empty.hpp b/3rdParty/Boost/src/boost/type_traits/is_empty.hpp
index 45c4e9e..8a2c5b8 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_empty.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_empty.hpp
@@ -31,6 +31,12 @@
// should be always the last #include directive
#include <boost/type_traits/detail/bool_trait_def.hpp>
+#ifndef BOOST_INTERNAL_IS_EMPTY
+#define BOOST_INTERNAL_IS_EMPTY(T) false
+#else
+#define BOOST_INTERNAL_IS_EMPTY(T) BOOST_IS_EMPTY(T)
+#endif
+
namespace boost {
namespace detail {
@@ -83,7 +89,7 @@ struct is_empty_impl
bool, value = (
::boost::type_traits::ice_or<
::boost::detail::empty_helper<cvt,::boost::is_class<T>::value>::value
- , BOOST_IS_EMPTY(cvt)
+ , BOOST_INTERNAL_IS_EMPTY(cvt)
>::value
));
};
@@ -118,7 +124,7 @@ struct is_empty_impl
, ::boost::is_class<T>::value
, ::boost::is_convertible< r_type,int>::value
>::value
- , BOOST_IS_EMPTY(cvt)
+ , BOOST_INTERNAL_IS_EMPTY(cvt)
>::value));
};
@@ -187,14 +193,14 @@ struct is_empty_impl
typedef typename result::type eh_type;
BOOST_STATIC_CONSTANT(bool, value =
- (::boost::type_traits::ice_or<eh_type::value, BOOST_IS_EMPTY(T)>::value));
+ (::boost::type_traits::ice_or<eh_type::value, BOOST_INTERNAL_IS_EMPTY(T)>::value));
};
#else
template <typename T> struct is_empty_impl
{
- BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_EMPTY(T));
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_INTERNAL_IS_EMPTY(T));
};
#endif // BOOST_MSVC6_MEMBER_TEMPLATES
@@ -217,5 +223,7 @@ BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_empty,T,::boost::detail::is_empty_impl<T>::value
#include <boost/type_traits/detail/bool_trait_undef.hpp>
+#undef BOOST_INTERNAL_IS_EMPTY
+
#endif // BOOST_TT_IS_EMPTY_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/type_traits/is_enum.hpp b/3rdParty/Boost/src/boost/type_traits/is_enum.hpp
index 86fa66d..e35548c 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_enum.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_enum.hpp
@@ -95,7 +95,7 @@ template <>
struct is_enum_helper<false>
{
template <typename T> struct type
- : ::boost::is_convertible<typename boost::add_reference<T>::type,::boost::detail::int_convertible>
+ : public ::boost::is_convertible<typename boost::add_reference<T>::type,::boost::detail::int_convertible>
{
};
};
diff --git a/3rdParty/Boost/src/boost/type_traits/is_function.hpp b/3rdParty/Boost/src/boost/type_traits/is_function.hpp
index 55c05c1..2cb1bb9 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_function.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_function.hpp
@@ -40,7 +40,7 @@ namespace detail {
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
template<bool is_ref = true>
struct is_function_chooser
- : ::boost::type_traits::false_result
+ : public ::boost::type_traits::false_result
{
};
@@ -48,14 +48,14 @@ template <>
struct is_function_chooser<false>
{
template< typename T > struct result_
- : ::boost::type_traits::is_function_ptr_helper<T*>
+ : public ::boost::type_traits::is_function_ptr_helper<T*>
{
};
};
template <typename T>
struct is_function_impl
- : is_function_chooser< ::boost::is_reference<T>::value >
+ : public is_function_chooser< ::boost::is_reference<T>::value >
::BOOST_NESTED_TEMPLATE result_<T>
{
};
diff --git a/3rdParty/Boost/src/boost/type_traits/is_fundamental.hpp b/3rdParty/Boost/src/boost/type_traits/is_fundamental.hpp
index 6aff7dd..138e296 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_fundamental.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_fundamental.hpp
@@ -22,7 +22,7 @@ namespace detail {
template <typename T>
struct is_fundamental_impl
- : ::boost::type_traits::ice_or<
+ : public ::boost::type_traits::ice_or<
::boost::is_arithmetic<T>::value
, ::boost::is_void<T>::value
>
diff --git a/3rdParty/Boost/src/boost/type_traits/is_member_function_pointer.hpp b/3rdParty/Boost/src/boost/type_traits/is_member_function_pointer.hpp
index 81f1eac..38babf4 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_member_function_pointer.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_member_function_pointer.hpp
@@ -55,7 +55,7 @@ namespace detail {
template <bool>
struct is_mem_fun_pointer_select
- : ::boost::type_traits::false_result
+ : public ::boost::type_traits::false_result
{
};
@@ -83,7 +83,7 @@ struct is_mem_fun_pointer_select<false>
template <typename T>
struct is_member_function_pointer_impl
- : is_mem_fun_pointer_select<
+ : public is_mem_fun_pointer_select<
::boost::type_traits::ice_or<
::boost::is_reference<T>::value
, ::boost::is_array<T>::value
diff --git a/3rdParty/Boost/src/boost/type_traits/is_member_pointer.hpp b/3rdParty/Boost/src/boost/type_traits/is_member_pointer.hpp
index ba02b89..a4a6d25 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_member_pointer.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_member_pointer.hpp
@@ -66,7 +66,7 @@ template <typename R, typename T>
template <bool>
struct is_member_pointer_select
- : ::boost::type_traits::false_result
+ : public ::boost::type_traits::false_result
{
};
@@ -87,7 +87,7 @@ struct is_member_pointer_select<false>
template <typename T>
struct is_member_pointer_impl
- : is_member_pointer_select<
+ : public is_member_pointer_select<
::boost::type_traits::ice_or<
::boost::is_reference<T>::value
, ::boost::is_array<T>::value
diff --git a/3rdParty/Boost/src/boost/type_traits/is_pod.hpp b/3rdParty/Boost/src/boost/type_traits/is_pod.hpp
index af2c3c4..4691e66 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_pod.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_pod.hpp
@@ -20,6 +20,12 @@
// should be the last #include
#include <boost/type_traits/detail/bool_trait_def.hpp>
+#ifndef BOOST_IS_POD
+#define BOOST_INTERNAL_IS_POD(T) false
+#else
+#define BOOST_INTERNAL_IS_POD(T) BOOST_IS_POD(T)
+#endif
+
namespace boost {
// forward declaration, needed by 'is_pod_array_helper' template below
@@ -36,14 +42,14 @@ template <typename T> struct is_pod_impl
(::boost::type_traits::ice_or<
::boost::is_scalar<T>::value,
::boost::is_void<T>::value,
- BOOST_IS_POD(T)
+ BOOST_INTERNAL_IS_POD(T)
>::value));
};
#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
template <typename T, std::size_t sz>
struct is_pod_impl<T[sz]>
- : is_pod_impl<T>
+ : public is_pod_impl<T>
{
};
#endif
@@ -60,7 +66,7 @@ struct is_pod_helper
(::boost::type_traits::ice_or<
::boost::is_scalar<T>::value,
::boost::is_void<T>::value,
- BOOST_IS_POD(T)
+ BOOST_INTERNAL_IS_POD(T)
>::value));
};
};
@@ -132,4 +138,6 @@ BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pod,T,::boost::detail::is_pod_impl<T>::value)
#include <boost/type_traits/detail/bool_trait_undef.hpp>
+#undef BOOST_INTERNAL_IS_POD
+
#endif // BOOST_TT_IS_POD_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/type_traits/is_pointer.hpp b/3rdParty/Boost/src/boost/type_traits/is_pointer.hpp
index f6ecf33..4e29bb3 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_pointer.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_pointer.hpp
@@ -113,7 +113,7 @@ no_type BOOST_TT_DECL is_pointer_tester(...);
template <bool>
struct is_pointer_select
- : ::boost::type_traits::false_result
+ : public ::boost::type_traits::false_result
{
};
@@ -133,7 +133,7 @@ struct is_pointer_select<false>
template <typename T>
struct is_pointer_impl
- : is_pointer_select<
+ : public is_pointer_select<
::boost::type_traits::ice_or<
::boost::is_reference<T>::value
, ::boost::is_array<T>::value
diff --git a/3rdParty/Boost/src/boost/type_traits/is_union.hpp b/3rdParty/Boost/src/boost/type_traits/is_union.hpp
index 25bddcc..610f162 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_union.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_union.hpp
@@ -25,7 +25,11 @@ namespace detail {
template <typename T> struct is_union_impl
{
typedef typename remove_cv<T>::type cvt;
+#ifdef BOOST_IS_UNION
BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_UNION(cvt));
+#else
+ BOOST_STATIC_CONSTANT(bool, value = false);
+#endif
};
#else
//
@@ -35,7 +39,11 @@ template <typename T> struct is_union_impl
//
template <typename T> struct is_union_impl
{
+#ifdef BOOST_IS_UNION
BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_UNION(T));
+#else
+ BOOST_STATIC_CONSTANT(bool, value = false);
+#endif
};
#endif
} // namespace detail
diff --git a/3rdParty/Boost/src/boost/type_traits/is_unsigned.hpp b/3rdParty/Boost/src/boost/type_traits/is_unsigned.hpp
index d8e5a89..0602838 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_unsigned.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_unsigned.hpp
@@ -109,7 +109,7 @@ template <> struct is_unsigned_imp<const char> : public true_type{};
template <> struct is_unsigned_imp<volatile char> : public true_type{};
template <> struct is_unsigned_imp<const volatile char> : public true_type{};
#endif
-#if defined(WCHAR_MIN) && (WCHAR_MIN == 0)
+#if defined(WCHAR_MIN) && (WCHAR_MIN == 0) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
template <> struct is_unsigned_imp<wchar_t> : public true_type{};
template <> struct is_unsigned_imp<const wchar_t> : public true_type{};
template <> struct is_unsigned_imp<volatile wchar_t> : public true_type{};
diff --git a/3rdParty/Boost/src/boost/type_traits/is_virtual_base_of.hpp b/3rdParty/Boost/src/boost/type_traits/is_virtual_base_of.hpp
index 8dcd988..f57cb61 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_virtual_base_of.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_virtual_base_of.hpp
@@ -23,7 +23,7 @@ namespace detail {
#ifdef BOOST_MSVC
#pragma warning( push )
#pragma warning( disable : 4584 4250)
-#elif defined __GNUC__
+#elif defined(__GNUC__) && (__GNUC__ >= 4)
#pragma GCC system_header
#endif
@@ -52,14 +52,14 @@ struct is_virtual_base_of_impl<Base, Derived, mpl::true_>
~boost_type_traits_internal_struct_Y()throw();
};
#else
- struct boost_type_traits_internal_struct_X : Derived, virtual Base
+ struct boost_type_traits_internal_struct_X : public Derived, virtual Base
{
boost_type_traits_internal_struct_X();
boost_type_traits_internal_struct_X(const boost_type_traits_internal_struct_X&);
boost_type_traits_internal_struct_X& operator=(const boost_type_traits_internal_struct_X&);
~boost_type_traits_internal_struct_X()throw();
};
- struct boost_type_traits_internal_struct_Y : Derived
+ struct boost_type_traits_internal_struct_Y : public Derived
{
boost_type_traits_internal_struct_Y();
boost_type_traits_internal_struct_Y(const boost_type_traits_internal_struct_Y&);
diff --git a/3rdParty/Boost/src/boost/type_traits/is_volatile.hpp b/3rdParty/Boost/src/boost/type_traits/is_volatile.hpp
index 43c3a8b..863747d 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_volatile.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_volatile.hpp
@@ -94,7 +94,7 @@ no_type is_volatile_tester(void const*);
template <bool is_ref, bool array>
struct is_volatile_helper
- : ::boost::type_traits::false_result
+ : public ::boost::type_traits::false_result
{
};
@@ -124,7 +124,7 @@ struct is_volatile_helper<false,true>
template <typename T>
struct is_volatile_impl
- : is_volatile_helper<
+ : public is_volatile_helper<
is_reference<T>::value
, is_array<T>::value
>::template result_<T>
diff --git a/3rdParty/Boost/src/boost/type_traits/msvc/typeof.hpp b/3rdParty/Boost/src/boost/type_traits/msvc/typeof.hpp
index ebb0e80..b95785d 100644
--- a/3rdParty/Boost/src/boost/type_traits/msvc/typeof.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/msvc/typeof.hpp
@@ -20,7 +20,7 @@ namespace boost { namespace detail {
};
template<typename T, typename ID>
- struct msvc_register_type : msvc_extract_type<ID>
+ struct msvc_register_type : public msvc_extract_type<ID>
{
template<>
struct id2type_impl<true> //VC7.0 specific bugfeature
@@ -36,7 +36,7 @@ namespace boost { namespace detail {
};
template<typename T, typename ID>
- struct msvc_register_type : msvc_extract_type<ID>
+ struct msvc_register_type : public msvc_extract_type<ID>
{
typedef msvc_extract_type<ID> base_type;
struct base_type::id2type // This uses nice VC6.5 and VC7.1 bugfeature
diff --git a/3rdParty/Boost/src/boost/type_traits/promote.hpp b/3rdParty/Boost/src/boost/type_traits/promote.hpp
index 14efad4..60f6278 100644
--- a/3rdParty/Boost/src/boost/type_traits/promote.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/promote.hpp
@@ -19,7 +19,7 @@ namespace detail {
template<class T>
struct promote_impl
- : integral_promotion<
+ : public integral_promotion<
BOOST_DEDUCED_TYPENAME floating_point_promotion<T>::type
>
{
diff --git a/3rdParty/Boost/src/boost/type_traits/remove_cv.hpp b/3rdParty/Boost/src/boost/type_traits/remove_cv.hpp
index 4061fd2..ee6d8f9 100644
--- a/3rdParty/Boost/src/boost/type_traits/remove_cv.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/remove_cv.hpp
@@ -27,6 +27,8 @@
namespace boost {
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
namespace detail{
template <class T>
@@ -49,7 +51,6 @@ struct rvalue_ref_filter_rem_cv<T&&>
}
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
// convert a type T to a non-cv-qualified type - remove_cv<T>
BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_cv,T,typename boost::detail::rvalue_ref_filter_rem_cv<T>::type)
diff --git a/3rdParty/Boost/src/boost/type_traits/remove_pointer.hpp b/3rdParty/Boost/src/boost/type_traits/remove_pointer.hpp
index 5359992..01253db 100644
--- a/3rdParty/Boost/src/boost/type_traits/remove_pointer.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/remove_pointer.hpp
@@ -9,12 +9,17 @@
#ifndef BOOST_TT_REMOVE_POINTER_HPP_INCLUDED
#define BOOST_TT_REMOVE_POINTER_HPP_INCLUDED
-#include <boost/type_traits/broken_compiler_spec.hpp>
#include <boost/config.hpp>
#include <boost/detail/workaround.hpp>
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/type_traits/broken_compiler_spec.hpp>
+#endif
#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
#include <boost/type_traits/msvc/remove_pointer.hpp>
+#elif defined(BOOST_MSVC)
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/is_pointer.hpp>
#endif
// should be the last #include
@@ -22,7 +27,51 @@
namespace boost {
-#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#ifdef BOOST_MSVC
+
+namespace detail{
+
+ //
+ // We need all this crazy indirection because a type such as:
+ //
+ // T (*const)(U)
+ //
+ // Does not bind to a <T*> or <T*const> partial specialization with VC10 and earlier
+ //
+ template <class T>
+ struct remove_pointer_imp
+ {
+ typedef T type;
+ };
+
+ template <class T>
+ struct remove_pointer_imp<T*>
+ {
+ typedef T type;
+ };
+
+ template <class T, bool b>
+ struct remove_pointer_imp3
+ {
+ typedef typename remove_pointer_imp<typename boost::remove_cv<T>::type>::type type;
+ };
+
+ template <class T>
+ struct remove_pointer_imp3<T, false>
+ {
+ typedef T type;
+ };
+
+ template <class T>
+ struct remove_pointer_imp2
+ {
+ typedef typename remove_pointer_imp3<T, ::boost::is_pointer<T>::value>::type type;
+ };
+}
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_pointer,T,typename boost::detail::remove_pointer_imp2<T>::type)
+
+#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_pointer,T,T)
BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_pointer,T*,T)
diff --git a/3rdParty/Boost/src/boost/type_traits/transform_traits.hpp b/3rdParty/Boost/src/boost/type_traits/transform_traits.hpp
new file mode 100644
index 0000000..7a82f1c
--- /dev/null
+++ b/3rdParty/Boost/src/boost/type_traits/transform_traits.hpp
@@ -0,0 +1,21 @@
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// 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.
+//
+// defines traits classes for transforming one type to another:
+// remove_reference, add_reference, remove_bounds, remove_pointer.
+//
+
+#ifndef BOOST_TT_TRANSFORM_TRAITS_HPP_INCLUDED
+#define BOOST_TT_TRANSFORM_TRAITS_HPP_INCLUDED
+
+#include <boost/type_traits/add_pointer.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/type_traits/remove_bounds.hpp>
+#include <boost/type_traits/remove_pointer.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+#endif // BOOST_TT_TRANSFORM_TRAITS_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/type_traits/type_with_alignment.hpp b/3rdParty/Boost/src/boost/type_traits/type_with_alignment.hpp
index ac31055..a86137f 100644
--- a/3rdParty/Boost/src/boost/type_traits/type_with_alignment.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/type_with_alignment.hpp
@@ -86,7 +86,7 @@ struct lower_alignment_helper_impl<false>
{
template <std::size_t target, class TestType>
struct apply
- : mpl::if_c<(alignment_of<TestType>::value == target), TestType, char>
+ : public mpl::if_c<(alignment_of<TestType>::value == target), TestType, char>
{
enum { value = (alignment_of<TestType>::value == target) };
};
@@ -94,7 +94,7 @@ struct lower_alignment_helper_impl<false>
template <bool found, std::size_t target, class TestType>
struct lower_alignment_helper
- : lower_alignment_helper_impl<found>::template apply<target,TestType>
+ : public lower_alignment_helper_impl<found>::template apply<target,TestType>
{
};
#else
@@ -225,6 +225,8 @@ struct __attribute__((__aligned__(4))) a4 {};
struct __attribute__((__aligned__(8))) a8 {};
struct __attribute__((__aligned__(16))) a16 {};
struct __attribute__((__aligned__(32))) a32 {};
+struct __attribute__((__aligned__(64))) a64 {};
+struct __attribute__((__aligned__(128))) a128 {};
}
template<> class type_with_alignment<1> { public: typedef char type; };
@@ -233,6 +235,8 @@ template<> class type_with_alignment<4> { public: typedef align::a4 type; };
template<> class type_with_alignment<8> { public: typedef align::a8 type; };
template<> class type_with_alignment<16> { public: typedef align::a16 type; };
template<> class type_with_alignment<32> { public: typedef align::a32 type; };
+template<> class type_with_alignment<64> { public: typedef align::a64 type; };
+template<> class type_with_alignment<128> { public: typedef align::a128 type; };
namespace detail {
BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a2,true)
@@ -240,6 +244,8 @@ BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a4,true)
BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a8,true)
BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a16,true)
BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a32,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a64,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a128,true)
}
#endif
#if (defined(BOOST_MSVC) || (defined(BOOST_INTEL) && defined(_MSC_VER))) && _MSC_VER >= 1300