diff options
author | Tobias Markmann <tm@ayena.de> | 2014-10-19 20:22:58 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2014-10-20 13:49:33 (GMT) |
commit | 6b22dfcf59474dd016a0355a3102a1dd3692d92c (patch) | |
tree | 2b1fd33be433a91e81fee84fdc2bf1b52575d934 /3rdParty/Boost/src/boost/intrusive/pointer_traits.hpp | |
parent | 38b0cb785fea8eae5e48fae56440695fdfd10ee1 (diff) | |
download | swift-6b22dfcf59474dd016a0355a3102a1dd3692d92c.zip swift-6b22dfcf59474dd016a0355a3102a1dd3692d92c.tar.bz2 |
Update Boost in 3rdParty to version 1.56.0.
This updates Boost in our 3rdParty directory to version 1.56.0.
Updated our update.sh script to stop on error.
Changed error reporting in SwiftTools/CrashReporter.cpp to SWIFT_LOG due to
missing include of <iostream> with newer Boost.
Change-Id: I4b35c77de951333979a524097f35f5f83d325edc
Diffstat (limited to '3rdParty/Boost/src/boost/intrusive/pointer_traits.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/intrusive/pointer_traits.hpp | 64 |
1 files changed, 36 insertions, 28 deletions
diff --git a/3rdParty/Boost/src/boost/intrusive/pointer_traits.hpp b/3rdParty/Boost/src/boost/intrusive/pointer_traits.hpp index 98ca6b9..fe898f6 100644 --- a/3rdParty/Boost/src/boost/intrusive/pointer_traits.hpp +++ b/3rdParty/Boost/src/boost/intrusive/pointer_traits.hpp @@ -6,7 +6,7 @@ // ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2011-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2011-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -17,14 +17,15 @@ #ifndef BOOST_INTRUSIVE_POINTER_TRAITS_HPP #define BOOST_INTRUSIVE_POINTER_TRAITS_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif #include <boost/intrusive/detail/config_begin.hpp> +#include <boost/intrusive/intrusive_fwd.hpp> #include <boost/intrusive/detail/workaround.hpp> #include <boost/intrusive/detail/memory_util.hpp> -#include <boost/type_traits/integral_constant.hpp> +#include <boost/intrusive/detail/mpl.hpp> #include <cstddef> namespace boost { @@ -59,9 +60,7 @@ struct pointer_traits //!shall be used instead of rebind<U> to obtain a pointer to U. template <class U> using rebind = unspecified; - //!Ptr::rebind<U> if such a type exists; otherwise, SomePointer<U, Args> if Ptr is - //!a class template instantiation of the form SomePointer<T, Args>, where Args is zero or - //!more type arguments ; otherwise, the instantiation of rebind is ill-formed. + //!Ptr::reference if such a type exists (non-standard extension); otherwise, element_type & //! typedef element_type &reference; #else @@ -73,18 +72,19 @@ struct pointer_traits // typedef BOOST_INTRUSIVE_OBTAIN_TYPE_WITH_DEFAULT (boost::intrusive::detail::, Ptr, difference_type, std::ptrdiff_t) difference_type; - // - typedef typename boost::intrusive::detail::unvoid<element_type>::type& reference; + + typedef BOOST_INTRUSIVE_OBTAIN_TYPE_WITH_DEFAULT + (boost::intrusive::detail::, Ptr, reference, typename boost::intrusive::detail::unvoid_ref<element_type>::type) reference; // template <class U> struct rebind_pointer { typedef typename boost::intrusive::detail::type_rebinder<Ptr, U>::type type; }; - #if !defined(BOOST_NO_TEMPLATE_ALIASES) + #if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) template <class U> using rebind = typename boost::intrusive::detail::type_rebinder<Ptr, U>::type; #endif - #endif //#if !defined(BOOST_NO_TEMPLATE_ALIASES) + #endif //#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) //! <b>Remark</b>: If element_type is (possibly cv-qualified) void, r type is unspecified; otherwise, //! it is element_type &. @@ -97,8 +97,8 @@ struct pointer_traits //tries to converts &r to pointer. const bool value = boost::intrusive::detail:: has_member_function_callable_with_pointer_to - <Ptr, typename boost::intrusive::detail::unvoid<element_type &>::type>::value; - ::boost::integral_constant<bool, value> flag; + <Ptr, reference>::value; + boost::intrusive::detail::bool_<value> flag; return pointer_traits::priv_pointer_to(flag, r); } @@ -112,7 +112,7 @@ struct pointer_traits const bool value = boost::intrusive::detail:: has_member_function_callable_with_static_cast_from <Ptr, const UPtr>::value; - ::boost::integral_constant<bool, value> flag; + boost::intrusive::detail::bool_<value> flag; return pointer_traits::priv_static_cast_from(flag, uptr); } @@ -126,7 +126,7 @@ struct pointer_traits const bool value = boost::intrusive::detail:: has_member_function_callable_with_const_cast_from <Ptr, const UPtr>::value; - ::boost::integral_constant<bool, value> flag; + boost::intrusive::detail::bool_<value> flag; return pointer_traits::priv_const_cast_from(flag, uptr); } @@ -140,7 +140,7 @@ struct pointer_traits const bool value = boost::intrusive::detail:: has_member_function_callable_with_dynamic_cast_from <Ptr, const UPtr>::value; - ::boost::integral_constant<bool, value> flag; + boost::intrusive::detail::bool_<value> flag; return pointer_traits::priv_dynamic_cast_from(flag, uptr); } @@ -157,38 +157,46 @@ struct pointer_traits { return pointer_traits::to_raw_pointer(p.operator->()); } //priv_pointer_to - static pointer priv_pointer_to(boost::true_type, typename boost::intrusive::detail::unvoid<element_type>::type& r) - { return Ptr::pointer_to(r); } + static pointer priv_pointer_to(boost::intrusive::detail::true_, reference r) + { return Ptr::pointer_to(r); } - static pointer priv_pointer_to(boost::false_type, typename boost::intrusive::detail::unvoid<element_type>::type& r) - { return pointer(boost::intrusive::detail::addressof(r)); } + static pointer priv_pointer_to(boost::intrusive::detail::false_, reference r) + { return pointer(boost::intrusive::detail::addressof(r)); } //priv_static_cast_from template<class UPtr> - static pointer priv_static_cast_from(boost::true_type, const UPtr &uptr) + static pointer priv_static_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) { return Ptr::static_cast_from(uptr); } template<class UPtr> - static pointer priv_static_cast_from(boost::false_type, const UPtr &uptr) + static pointer priv_static_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) { return pointer_to(*static_cast<element_type*>(to_raw_pointer(uptr))); } //priv_const_cast_from template<class UPtr> - static pointer priv_const_cast_from(boost::true_type, const UPtr &uptr) + static pointer priv_const_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) { return Ptr::const_cast_from(uptr); } template<class UPtr> - static pointer priv_const_cast_from(boost::false_type, const UPtr &uptr) + static pointer priv_const_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) { return pointer_to(const_cast<element_type&>(*uptr)); } //priv_dynamic_cast_from template<class UPtr> - static pointer priv_dynamic_cast_from(boost::true_type, const UPtr &uptr) + static pointer priv_dynamic_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) { return Ptr::dynamic_cast_from(uptr); } template<class UPtr> - static pointer priv_dynamic_cast_from(boost::false_type, const UPtr &uptr) - { return pointer_to(*dynamic_cast<element_type*>(&*uptr)); } + static pointer priv_dynamic_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) + { + element_type *p = dynamic_cast<element_type*>(&*uptr); + if(!p){ + return pointer(); + } + else{ + return pointer_to(*p); + } + } ///@endcond }; @@ -224,8 +232,8 @@ struct pointer_traits<T*> //!shall be used instead of rebind<U> to obtain a pointer to U. template <class U> using rebind = U*; #else - typedef typename boost::intrusive::detail::unvoid<element_type>::type& reference; - #if !defined(BOOST_NO_TEMPLATE_ALIASES) + typedef typename boost::intrusive::detail::unvoid_ref<element_type>::type reference; + #if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) template <class U> using rebind = U*; #endif #endif |