diff options
Diffstat (limited to '3rdParty/Boost/src/boost/type_traits')
11 files changed, 56 insertions, 27 deletions
diff --git a/3rdParty/Boost/src/boost/type_traits/alignment_of.hpp b/3rdParty/Boost/src/boost/type_traits/alignment_of.hpp index 564d3bb..51357ce 100644 --- a/3rdParty/Boost/src/boost/type_traits/alignment_of.hpp +++ b/3rdParty/Boost/src/boost/type_traits/alignment_of.hpp @@ -57,11 +57,11 @@ template< typename T > struct alignment_of_impl { #if defined(BOOST_MSVC) && (BOOST_MSVC >= 1400) - // - // With MSVC both the native __alignof operator - // and our own logic gets things wrong from time to time :-( - // Using a combination of the two seems to make the most of a bad job: - // + // + // With MSVC both the native __alignof operator + // and our own logic gets things wrong from time to time :-( + // Using a combination of the two seems to make the most of a bad job: + // BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::alignment_logic< sizeof(::boost::detail::alignment_of_hack<T>) - sizeof(T), diff --git a/3rdParty/Boost/src/boost/type_traits/intrinsics.hpp b/3rdParty/Boost/src/boost/type_traits/intrinsics.hpp index 91ee88b..8f88036 100644 --- a/3rdParty/Boost/src/boost/type_traits/intrinsics.hpp +++ b/3rdParty/Boost/src/boost/type_traits/intrinsics.hpp @@ -82,7 +82,7 @@ # define BOOST_HAS_TYPE_TRAITS_INTRINSICS #endif -#if defined(BOOST_MSVC) && defined(_MSC_FULL_VER) && (_MSC_FULL_VER >=140050215) +#if defined(BOOST_MSVC) && defined(BOOST_MSVC_FULL_VER) && (BOOST_MSVC_FULL_VER >=140050215) # include <boost/type_traits/is_same.hpp> # define BOOST_IS_UNION(T) __is_union(T) @@ -149,7 +149,7 @@ # define BOOST_IS_CLASS(T) __is_class(T) # define BOOST_IS_ENUM(T) __is_enum(T) # define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T) -# if !defined(unix) || defined(__LP64__) +# if (!defined(unix) && !defined(__unix__)) || defined(__LP64__) // GCC sometimes lies about alignment requirements // of type double on 32-bit unix platforms, use the // old implementation instead in that case: diff --git a/3rdParty/Boost/src/boost/type_traits/is_abstract.hpp b/3rdParty/Boost/src/boost/type_traits/is_abstract.hpp index a11718d..09fdf33 100644 --- a/3rdParty/Boost/src/boost/type_traits/is_abstract.hpp +++ b/3rdParty/Boost/src/boost/type_traits/is_abstract.hpp @@ -94,12 +94,12 @@ struct is_abstract_imp2 #ifdef __GNUC__ BOOST_STATIC_CONSTANT(std::size_t, s1 = sizeof(is_abstract_imp2<T>::template check_sig<T>(0))); #else -#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) +#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000) #pragma warning(push) #pragma warning(disable:6334) #endif BOOST_STATIC_CONSTANT(std::size_t, s1 = sizeof(check_sig<T>(0))); -#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) +#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000) #pragma warning(pop) #endif #endif diff --git a/3rdParty/Boost/src/boost/type_traits/is_base_and_derived.hpp b/3rdParty/Boost/src/boost/type_traits/is_base_and_derived.hpp index 8367b76..d6a9991 100644 --- a/3rdParty/Boost/src/boost/type_traits/is_base_and_derived.hpp +++ b/3rdParty/Boost/src/boost/type_traits/is_base_and_derived.hpp @@ -15,10 +15,10 @@ #include <boost/type_traits/is_same.hpp> #include <boost/type_traits/is_convertible.hpp> #include <boost/type_traits/detail/ice_and.hpp> -#include <boost/type_traits/remove_cv.hpp> #include <boost/config.hpp> #include <boost/static_assert.hpp> #endif +#include <boost/type_traits/remove_cv.hpp> // should be the last #include #include <boost/type_traits/detail/bool_trait_def.hpp> @@ -133,7 +133,7 @@ struct bd_helper template<typename B, typename D> struct is_base_and_derived_impl2 { -#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) +#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000) #pragma warning(push) #pragma warning(disable:6334) #endif @@ -156,7 +156,7 @@ struct is_base_and_derived_impl2 BOOST_STATIC_CONSTANT(bool, value = sizeof(bd_helper<B,D>::check_sig(Host(), 0)) == sizeof(type_traits::yes_type)); -#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) +#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000) #pragma warning(pop) #endif }; @@ -212,7 +212,7 @@ struct is_base_and_derived_impl typedef is_base_and_derived_select< ::boost::is_class<B>::value, ::boost::is_class<D>::value, - ::boost::is_same<B,D>::value> selector; + ::boost::is_same<ncvB,ncvD>::value> selector; typedef typename selector::template rebind<ncvB,ncvD> binder; typedef typename binder::type bound_type; @@ -222,7 +222,10 @@ struct is_base_and_derived_impl template <typename B, typename D> struct is_base_and_derived_impl { - BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_BASE_OF(B,D)); + typedef typename remove_cv<B>::type ncvB; + typedef typename remove_cv<D>::type ncvD; + + BOOST_STATIC_CONSTANT(bool, value = (BOOST_IS_BASE_OF(B,D) && ! ::boost::is_same<ncvB,ncvD>::value)); }; #endif } // namespace detail diff --git a/3rdParty/Boost/src/boost/type_traits/is_base_of.hpp b/3rdParty/Boost/src/boost/type_traits/is_base_of.hpp index bf46da3..0cc7a32 100644 --- a/3rdParty/Boost/src/boost/type_traits/is_base_of.hpp +++ b/3rdParty/Boost/src/boost/type_traits/is_base_of.hpp @@ -11,21 +11,32 @@ #include <boost/type_traits/is_base_and_derived.hpp> #include <boost/type_traits/is_same.hpp> +#include <boost/type_traits/is_class.hpp> #include <boost/type_traits/detail/ice_or.hpp> +#include <boost/type_traits/detail/ice_and.hpp> // should be the last #include #include <boost/type_traits/detail/bool_trait_def.hpp> namespace boost { + namespace detail{ + template <class B, class D> + struct is_base_of_imp + { + typedef typename remove_cv<B>::type ncvB; + typedef typename remove_cv<D>::type ncvD; + BOOST_STATIC_CONSTANT(bool, value = (::boost::type_traits::ice_or< + (::boost::detail::is_base_and_derived_impl<ncvB,ncvD>::value), + (::boost::type_traits::ice_and< ::boost::is_same<ncvB,ncvD>::value, ::boost::is_class<ncvB>::value>::value)>::value)); + }; + } + BOOST_TT_AUX_BOOL_TRAIT_DEF2( is_base_of , Base , Derived - , (::boost::type_traits::ice_or< - (::boost::detail::is_base_and_derived_impl<Base,Derived>::value), - (::boost::is_same<Base,Derived>::value)>::value) - ) + , (::boost::detail::is_base_of_imp<Base, Derived>::value)) #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_of,Base&,Derived,false) diff --git a/3rdParty/Boost/src/boost/type_traits/is_convertible.hpp b/3rdParty/Boost/src/boost/type_traits/is_convertible.hpp index ce522a0..a31a930 100644 --- a/3rdParty/Boost/src/boost/type_traits/is_convertible.hpp +++ b/3rdParty/Boost/src/boost/type_traits/is_convertible.hpp @@ -256,7 +256,7 @@ struct is_convertible_basic_impl #ifdef BOOST_MSVC #pragma warning(push) #pragma warning(disable:4244) -#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) +#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000) #pragma warning(disable:6334) #endif #endif diff --git a/3rdParty/Boost/src/boost/type_traits/is_function.hpp b/3rdParty/Boost/src/boost/type_traits/is_function.hpp index 1fba1bd..95dba0d 100644 --- a/3rdParty/Boost/src/boost/type_traits/is_function.hpp +++ b/3rdParty/Boost/src/boost/type_traits/is_function.hpp @@ -65,7 +65,7 @@ struct is_function_impl template <typename T> struct is_function_impl { -#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) +#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000) #pragma warning(push) #pragma warning(disable:6334) #endif @@ -74,7 +74,7 @@ struct is_function_impl bool, value = sizeof(::boost::type_traits::is_function_ptr_tester(t)) == sizeof(::boost::type_traits::yes_type) ); -#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) +#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000) #pragma warning(pop) #endif }; 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 3fff063..81f1eac 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 @@ -64,7 +64,7 @@ struct is_mem_fun_pointer_select<false> { template <typename T> struct result_ { -#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) +#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000) #pragma warning(push) #pragma warning(disable:6334) #endif @@ -75,7 +75,7 @@ struct is_mem_fun_pointer_select<false> bool, value = ( 1 == sizeof(::boost::type_traits::is_mem_fun_pointer_tester(self_type::make_t)) )); -#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) +#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000) #pragma warning(pop) #endif }; 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 cdf3d6a..ba02b89 100644 --- a/3rdParty/Boost/src/boost/type_traits/is_member_pointer.hpp +++ b/3rdParty/Boost/src/boost/type_traits/is_member_pointer.hpp @@ -50,7 +50,7 @@ BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer, BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,::boost::is_member_function_pointer<T>::value) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*,true) -#if !BOOST_WORKAROUND(__MWERKS__,<=0x3003) +#if !BOOST_WORKAROUND(__MWERKS__,<=0x3003) && !BOOST_WORKAROUND(__IBMCPP__, <=600) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*const,true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*volatile,true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*const volatile,true) diff --git a/3rdParty/Boost/src/boost/type_traits/is_signed.hpp b/3rdParty/Boost/src/boost/type_traits/is_signed.hpp index 73389a1..bf7bbfd 100644 --- a/3rdParty/Boost/src/boost/type_traits/is_signed.hpp +++ b/3rdParty/Boost/src/boost/type_traits/is_signed.hpp @@ -27,10 +27,18 @@ namespace detail{ #if !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238) template <class T> +struct is_signed_values +{ + typedef typename remove_cv<T>::type no_cv_t; + BOOST_STATIC_CONSTANT(no_cv_t, minus_one = (static_cast<no_cv_t>(-1))); + BOOST_STATIC_CONSTANT(no_cv_t, zero = (static_cast<no_cv_t>(0))); +}; + +template <class T> struct is_signed_helper { typedef typename remove_cv<T>::type no_cv_t; - BOOST_STATIC_CONSTANT(bool, value = (static_cast<no_cv_t>(-1) < 0)); + BOOST_STATIC_CONSTANT(bool, value = (!(::boost::detail::is_signed_values<T>::minus_one > boost::detail::is_signed_values<T>::zero))); }; template <bool integral_type> diff --git a/3rdParty/Boost/src/boost/type_traits/is_unsigned.hpp b/3rdParty/Boost/src/boost/type_traits/is_unsigned.hpp index 4866486..98baf4e 100644 --- a/3rdParty/Boost/src/boost/type_traits/is_unsigned.hpp +++ b/3rdParty/Boost/src/boost/type_traits/is_unsigned.hpp @@ -27,10 +27,17 @@ namespace detail{ #if !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238) template <class T> -struct is_ununsigned_helper +struct is_unsigned_values { typedef typename remove_cv<T>::type no_cv_t; - BOOST_STATIC_CONSTANT(bool, value = (static_cast<no_cv_t>(-1) > 0)); + BOOST_STATIC_CONSTANT(no_cv_t, minus_one = (static_cast<no_cv_t>(-1))); + BOOST_STATIC_CONSTANT(no_cv_t, zero = (static_cast<no_cv_t>(0))); +}; + +template <class T> +struct is_ununsigned_helper +{ + BOOST_STATIC_CONSTANT(bool, value = (::boost::detail::is_unsigned_values<T>::minus_one > ::boost::detail::is_unsigned_values<T>::zero)); }; template <bool integral_type> |