diff options
author | robot-contrib <robot-contrib@yandex-team.com> | 2022-09-24 22:55:11 +0300 |
---|---|---|
committer | robot-contrib <robot-contrib@yandex-team.com> | 2022-09-24 22:55:11 +0300 |
commit | 6b254be726eace55892901d6cb7bdd1d039ce2b6 (patch) | |
tree | f8b62f9422d005f96e653281e9e921354db025e7 | |
parent | 3299297793246023532c2fcd8e08baaaf7e1006a (diff) | |
download | ydb-6b254be726eace55892901d6cb7bdd1d039ce2b6.tar.gz |
Update contrib/restricted/boost/fusion to 1.80.0
36 files changed, 209 insertions, 497 deletions
diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp index e68cd7cedd..ea30cb55c1 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp @@ -59,8 +59,6 @@ namespace boost { namespace fusion : cons(in_cons) {} Cons& cons; - boost_tuple_iterator(const boost_tuple_iterator& other) = default; - template <typename Iterator> struct value_of : mpl::identity<typename Iterator::cons_type::head_type> {}; diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/detail/for_each.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/detail/for_each.hpp index 0bef5cec4a..c674511eba 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/detail/for_each.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/detail/for_each.hpp @@ -30,7 +30,7 @@ namespace detail template <typename First, typename Last, typename F> BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline void - for_each_linear(First const& first, Last const& last, F const& f, mpl::false_) + for_each_linear(First const& first, Last const& last, F& f, mpl::false_) { f(*first); detail::for_each_linear(fusion::next(first), last, f, @@ -41,7 +41,7 @@ namespace detail template <typename Sequence, typename F, typename Tag> BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline void - for_each_dispatch(Sequence& seq, F const& f, Tag) + for_each_dispatch(Sequence& seq, F& f, Tag) { detail::for_each_linear( fusion::begin(seq) @@ -57,7 +57,7 @@ namespace detail { template<typename I0, typename F> BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - static void call(I0 const& i0, F const& f) + static void call(I0 const& i0, F& f) { f(*i0); typedef typename result_of::next<I0>::type I1; @@ -78,7 +78,7 @@ namespace detail { template<typename I0, typename F> BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - static void call(I0 const& i0, F const& f) + static void call(I0 const& i0, F& f) { f(*i0); typedef typename result_of::next<I0>::type I1; @@ -95,7 +95,7 @@ namespace detail { template<typename I0, typename F> BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - static void call(I0 const& i0, F const& f) + static void call(I0 const& i0, F& f) { f(*i0); typedef typename result_of::next<I0>::type I1; @@ -109,7 +109,7 @@ namespace detail { template<typename I0, typename F> BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - static void call(I0 const& i0, F const& f) + static void call(I0 const& i0, F& f) { f(*i0); } @@ -128,7 +128,7 @@ namespace detail template <typename Sequence, typename F> BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline void - for_each_dispatch(Sequence& seq, F const& f, random_access_traversal_tag) + for_each_dispatch(Sequence& seq, F& f, random_access_traversal_tag) { typedef typename result_of::begin<Sequence>::type begin; typedef typename result_of::end<Sequence>::type end; @@ -138,7 +138,7 @@ namespace detail template <typename Sequence, typename F> BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline void - for_each(Sequence& seq, F const& f, mpl::false_) // unsegmented implementation + for_each(Sequence& seq, F& f, mpl::false_) // unsegmented implementation { detail::for_each_dispatch(seq, f, typename traits::category_of<Sequence>::type()); } diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp index a32d9dad00..7b299f869c 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp @@ -19,11 +19,11 @@ namespace boost { namespace fusion { namespace detail struct segmented_for_each_fun { BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - explicit segmented_for_each_fun(Fun const& f) + explicit segmented_for_each_fun(Fun& f) : fun(f) {} - Fun const& fun; + Fun& fun; template <typename Sequence, typename State, typename Context> struct apply @@ -43,7 +43,7 @@ namespace boost { namespace fusion { namespace detail template <typename Sequence, typename F> BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED inline void - for_each(Sequence& seq, F const& f, mpl::true_) // segmented implementation + for_each(Sequence& seq, F& f, mpl::true_) // segmented implementation { fusion::segmented_fold_until(seq, void_(), segmented_for_each_fun<F>(f)); } diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/for_each.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/for_each.hpp index a523c85eb0..3499667517 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/for_each.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/for_each.hpp @@ -1,6 +1,7 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman Copyright (c) 2007 Dan Marsden + Copyright (c) 2018 Kohei Takahashi 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) @@ -13,7 +14,7 @@ #include <boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp> #include <boost/fusion/support/is_segmented.hpp> #include <boost/fusion/support/is_sequence.hpp> -#include <boost/utility/enable_if.hpp> +#include <boost/core/enable_if.hpp> namespace boost { namespace fusion { @@ -28,24 +29,16 @@ namespace boost { namespace fusion template <typename Sequence, typename F> BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - inline typename - enable_if< - traits::is_sequence<Sequence> - , void - >::type - for_each(Sequence& seq, F const& f) + inline typename enable_if<traits::is_sequence<Sequence> >::type + for_each(Sequence& seq, F f) { detail::for_each(seq, f, typename traits::is_segmented<Sequence>::type()); } template <typename Sequence, typename F> BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - inline typename - enable_if< - traits::is_sequence<Sequence> - , void - >::type - for_each(Sequence const& seq, F const& f) + inline typename enable_if<traits::is_sequence<Sequence> >::type + for_each(Sequence const& seq, F f) { detail::for_each(seq, f, typename traits::is_segmented<Sequence>::type()); } diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/for_each_fwd.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/for_each_fwd.hpp index 13720eadae..c3ffaa42d8 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/for_each_fwd.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/for_each_fwd.hpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2011 Eric Niebler + Copyright (c) 2018 Kohei Takahashi 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) @@ -9,7 +10,7 @@ #include <boost/fusion/support/config.hpp> #include <boost/fusion/support/is_sequence.hpp> -#include <boost/utility/enable_if.hpp> +#include <boost/core/enable_if.hpp> namespace boost { namespace fusion { @@ -21,21 +22,13 @@ namespace boost { namespace fusion template <typename Sequence, typename F> BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - inline typename - enable_if< - traits::is_sequence<Sequence> - , void - >::type - for_each(Sequence& seq, F const& f); + inline typename enable_if<traits::is_sequence<Sequence> >::type + for_each(Sequence& seq, F f); template <typename Sequence, typename F> BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - inline typename - enable_if< - traits::is_sequence<Sequence> - , void - >::type - for_each(Sequence const& seq, F const& f); + inline typename enable_if<traits::is_sequence<Sequence> >::type + for_each(Sequence const& seq, F f); }} #endif diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/query/detail/find_if.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/query/detail/find_if.hpp index b200794a48..06a7af79b7 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/query/detail/find_if.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/query/detail/find_if.hpp @@ -2,6 +2,7 @@ Copyright (c) 2001-2011 Joel de Guzman Copyright (c) 2007 Dan Marsden Copyright (c) 2009 Christopher Schmidt + Copyright (c) 2018 Kohei Takahashi 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) @@ -13,7 +14,6 @@ #include <boost/mpl/apply.hpp> #include <boost/mpl/eval_if.hpp> #include <boost/mpl/identity.hpp> -#include <boost/mpl/lambda.hpp> #include <boost/mpl/or.hpp> #include <boost/fusion/iterator/advance.hpp> #include <boost/fusion/iterator/distance.hpp> @@ -22,10 +22,9 @@ #include <boost/fusion/sequence/intrinsic/begin.hpp> #include <boost/fusion/sequence/intrinsic/end.hpp> #include <boost/fusion/support/category_of.hpp> +#include <boost/core/enable_if.hpp> -namespace boost { namespace fusion { - struct random_access_traversal_tag; -namespace detail +namespace boost { namespace fusion { namespace detail { template <typename Iterator, typename Pred> struct apply_filter @@ -178,8 +177,8 @@ namespace detail choose_find_if< First , Last - , typename mpl::lambda<Pred>::type - , is_base_of<random_access_traversal_tag, typename traits::category_of<First>::type>::value + , Pred + , traits::is_random_access<First>::value >::type type; @@ -208,31 +207,23 @@ namespace detail return recursive_call(iter, found()); } - template <typename Iterator, typename Tag> + template <typename Iterator> BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - static type - choose_call(Iterator const& iter, Tag) + static typename boost::disable_if<traits::is_random_access<Iterator>, type>::type + iter_call(Iterator const& iter) { return recursive_call(iter); } template <typename Iterator> BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - static type - choose_call(Iterator const& iter, random_access_traversal_tag) + static typename boost::enable_if<traits::is_random_access<Iterator>, type>::type + iter_call(Iterator const& iter) { typedef typename result_of::distance<Iterator, type>::type N; return fusion::advance<N>(iter); } - template <typename Iterator> - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - static type - iter_call(Iterator const& iter) - { - return choose_call(iter, typename traits::category_of<Iterator>::type()); - } - template <typename Sequence> BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED static type diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/container/deque/deque_iterator.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/container/deque/deque_iterator.hpp index aff9109351..b0335e5f2b 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/container/deque/deque_iterator.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/container/deque/deque_iterator.hpp @@ -113,7 +113,6 @@ namespace boost { namespace fusion { // silence MSVC warning C4512: assignment operator could not be generated BOOST_DELETED_FUNCTION(deque_iterator& operator= (deque_iterator const&)) - deque_iterator(const deque_iterator&) = default; }; }} diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/container/deque/detail/keyed_element.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/container/deque/detail/keyed_element.hpp index 15b686671d..3ab88b9283 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/container/deque/detail/keyed_element.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/container/deque/detail/keyed_element.hpp @@ -13,6 +13,11 @@ #include <boost/fusion/iterator/deref.hpp> #include <boost/fusion/iterator/next.hpp> +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && BOOST_WORKAROUND(BOOST_GCC, / 100 == 404) +#include <boost/core/enable_if.hpp> +#include <boost/type_traits/is_same.hpp> +#endif + namespace boost { namespace fusion { struct fusion_sequence_tag; @@ -114,8 +119,13 @@ namespace boost { namespace fusion { namespace detail {} #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#if BOOST_WORKAROUND(BOOST_GCC, / 100 == 404) + template <typename Value_, typename = typename enable_if<is_same<Value_, Value> >::type> +#else + typedef Value Value_; +#endif BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - keyed_element(Value&& value, Rest&& rest) + keyed_element(Value_&& value, Rest&& rest) : Rest(std::move(rest)) , value_(BOOST_FUSION_FWD_ELEM(Value, value)) {} diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/container/list/cons.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/container/list/cons.hpp index 0dd91b0c32..dd7f887389 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/container/list/cons.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/container/list/cons.hpp @@ -70,6 +70,10 @@ namespace boost { namespace fusion cons(cons<Car2, Cdr2> const& rhs) : car(rhs.car), cdr(rhs.cdr) {} +#if BOOST_WORKAROUND(BOOST_GCC, / 100 == 406) && !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) + // Workaround for `array used as initializer` compile error on gcc 4.6 w/ c++0x. + template <typename = void> +#endif BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED cons(cons const& rhs) : car(rhs.car), cdr(rhs.cdr) {} diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/container/list/cons_iterator.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/container/list/cons_iterator.hpp index d80244f3e5..5c0491dbc8 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/container/list/cons_iterator.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/container/list/cons_iterator.hpp @@ -44,7 +44,6 @@ namespace boost { namespace fusion // silence MSVC warning C4512: assignment operator could not be generated BOOST_DELETED_FUNCTION(cons_iterator& operator= (cons_iterator const&)) - cons_iterator(const cons_iterator&) = default; }; struct nil_iterator : iterator_base<nil_iterator> diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/container/map/detail/map_impl.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/container/map/detail/map_impl.hpp deleted file mode 100644 index c62145ba0c..0000000000 --- a/contrib/restricted/boost/fusion/include/boost/fusion/container/map/detail/map_impl.hpp +++ /dev/null @@ -1,206 +0,0 @@ -/*============================================================================= - Copyright (c) 2005-2013 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_MAP_IMPL_02032013_2233) -#define BOOST_FUSION_MAP_IMPL_02032013_2233 - -#include <boost/fusion/support/config.hpp> -#include <boost/fusion/support/detail/access.hpp> -#include <boost/fusion/iterator/deref.hpp> -#include <boost/fusion/iterator/next.hpp> -#include <boost/mpl/int.hpp> -#include <boost/mpl/identity.hpp> - -namespace boost { namespace fusion -{ - struct fusion_sequence_tag; -}} - -namespace boost { namespace fusion { namespace detail -{ - struct map_impl_from_iterator {}; - - template <int index, typename ...T> - struct map_impl; - - template <int index_> - struct map_impl<index_> - { - typedef fusion_sequence_tag tag; - static int const index = index_; - static int const size = 0; - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - map_impl() BOOST_NOEXCEPT {} - - template <typename Iterator> - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - map_impl(Iterator const&, map_impl_from_iterator) BOOST_NOEXCEPT - {} - - template <typename Iterator> - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - void assign(Iterator const&, map_impl_from_iterator) BOOST_NOEXCEPT - {} - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - void get(); - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - void get_val(); - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - void get_key(); - }; - - template <int index_, typename Pair, typename ...T> - struct map_impl<index_, Pair, T...> : map_impl<index_ + 1, T...> - { - typedef fusion_sequence_tag tag; - typedef map_impl<index_+1, T...> rest_type; - - using rest_type::get; - using rest_type::get_val; - using rest_type::get_key; - - static int const index = index_; - static int const size = rest_type::size + 1; - - typedef Pair pair_type; - typedef typename Pair::first_type key_type; - typedef typename Pair::second_type value_type; - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - map_impl() - : rest_type(), element() - {} - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - map_impl(map_impl const& rhs) - : rest_type(rhs.get_base()), element(rhs.element) - {} - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - map_impl(map_impl&& rhs) - : rest_type(BOOST_FUSION_FWD_ELEM(rest_type, *static_cast<rest_type*>(&rhs))) - , element(BOOST_FUSION_FWD_ELEM(Pair, rhs.element)) - {} - - template <typename ...U> - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - map_impl(map_impl<index, U...> const& rhs) - : rest_type(rhs.get_base()), element(rhs.element) - {} - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - map_impl(typename detail::call_param<Pair>::type element_ - , typename detail::call_param<T>::type... rest) - : rest_type(rest...), element(element_) - {} - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - map_impl(Pair&& element_, T&&... rest) - : rest_type(BOOST_FUSION_FWD_ELEM(T, rest)...) - , element(BOOST_FUSION_FWD_ELEM(Pair, element_)) - {} - - template <typename Iterator> - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - map_impl(Iterator const& iter, map_impl_from_iterator fi) - : rest_type(fusion::next(iter), fi) - , element(*iter) - {} - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - rest_type& get_base() - { - return *this; - } - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - rest_type const& get_base() const - { - return *this; - } - - BOOST_FUSION_GPU_ENABLED - value_type get_val(mpl::identity<key_type>); - BOOST_FUSION_GPU_ENABLED - pair_type get_val(mpl::int_<index>); - BOOST_FUSION_GPU_ENABLED - value_type get_val(mpl::identity<key_type>) const; - BOOST_FUSION_GPU_ENABLED - pair_type get_val(mpl::int_<index>) const; - - BOOST_FUSION_GPU_ENABLED - mpl::identity<key_type> get_key(mpl::int_<index>); - BOOST_FUSION_GPU_ENABLED - mpl::identity<key_type> get_key(mpl::int_<index>) const; - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - typename cref_result<value_type>::type - get(mpl::identity<key_type>) const - { - return element.second; - } - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - typename ref_result<value_type>::type - get(mpl::identity<key_type>) - { - return element.second; - } - - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - typename cref_result<pair_type>::type - get(mpl::int_<index>) const - { - return element; - } - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - typename ref_result<pair_type>::type - get(mpl::int_<index>) - { - return element; - } - - template <typename ...U> - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - map_impl& operator=(map_impl<index, U...> const& rhs) - { - rest_type::operator=(rhs); - element = rhs.element; - return *this; - } - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - map_impl& operator=(map_impl const& rhs) - { - rest_type::operator=(rhs); - element = rhs.element; - return *this; - } - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - map_impl& operator=(map_impl&& rhs) - { - rest_type::operator=(std::forward<map_impl>(rhs)); - element = BOOST_FUSION_FWD_ELEM(Pair, rhs.element); - return *this; - } - - template <typename Iterator> - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - void assign(Iterator const& iter, map_impl_from_iterator fi) - { - rest_type::assign(fusion::next(iter), fi); - element = *iter; - } - - Pair element; - }; -}}} - -#endif diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/container/map/map_fwd.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/container/map/map_fwd.hpp index 18e445b03e..614ea24975 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/container/map/map_fwd.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/container/map/map_fwd.hpp @@ -36,8 +36,6 @@ # include <boost/fusion/container/map/detail/cpp03/map_fwd.hpp> #else -#include <boost/fusion/container/map/detail/map_impl.hpp> - /////////////////////////////////////////////////////////////////////////////// // C++11 interface /////////////////////////////////////////////////////////////////////////////// diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/container/vector/detail/value_at_impl.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/container/vector/detail/value_at_impl.hpp index a2b9b2f6ba..f29c0e14e5 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/container/vector/detail/value_at_impl.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/container/vector/detail/value_at_impl.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2014 Kohei Takahashi + Copyright (c) 2014,2018 Kohei Takahashi 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) @@ -7,7 +7,6 @@ #ifndef FUSION_VALUE_AT_IMPL_16122014_1641 #define FUSION_VALUE_AT_IMPL_16122014_1641 -#include <boost/config.hpp> #include <boost/fusion/support/config.hpp> #include <boost/fusion/container/vector/detail/config.hpp> @@ -23,6 +22,7 @@ /////////////////////////////////////////////////////////////////////////////// #include <boost/fusion/container/vector/vector_fwd.hpp> #include <boost/type_traits/declval.hpp> +#include <boost/mpl/identity.hpp> namespace boost { namespace fusion { @@ -35,7 +35,7 @@ namespace boost { namespace fusion template <std::size_t N, typename U> static inline BOOST_FUSION_GPU_ENABLED - U value_at_impl(store<N, U> const volatile*); + mpl::identity<U> value_at_impl(store<N, U> const volatile*); } namespace extension @@ -47,12 +47,10 @@ namespace boost { namespace fusion struct value_at_impl<vector_tag> { template <typename Sequence, typename N> - struct apply - { - typedef - decltype(vector_detail::value_at_impl<N::value>(boost::declval<Sequence*>())) - type; - }; + struct apply : BOOST_FUSION_DECLTYPE_N3031(( + vector_detail::value_at_impl<N::value>(boost::declval<Sequence*>()) + )) + {}; }; } }} diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/container/vector/vector.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/container/vector/vector.hpp index 4993e2eb7c..02ffe51450 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/container/vector/vector.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/container/vector/vector.hpp @@ -168,9 +168,15 @@ namespace boost { namespace fusion : elem(std::forward<U>(rhs)) {} + using elem_type = T; T elem; }; + // placed outside of vector_data due to GCC < 6 bug + template <std::size_t J, typename U> + static inline BOOST_FUSION_GPU_ENABLED + store<J, U> store_at_impl(store<J, U>*); + template <typename I, typename ...T> struct vector_data; @@ -231,32 +237,23 @@ namespace boost { namespace fusion assign(std::forward<Sequence>(seq), detail::index_sequence<M...>()); } - template <std::size_t N, typename U> - static BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - U& at_detail(store<N, U>* this_) - { - return this_->elem; - } - - template <std::size_t N, typename U> - static BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - U const& at_detail(store<N, U> const* this_) - { - return this_->elem; - } + private: + template <std::size_t J> + using store_at = decltype(store_at_impl<J>(static_cast<vector_data*>(nullptr))); + public: template <typename J> BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - auto at_impl(J) -> decltype(at_detail<J::value>(&std::declval<vector_data&>())) + typename store_at<J::value>::elem_type& at_impl(J) { - return at_detail<J::value>(this); + return store_at<J::value>::elem; } template <typename J> BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - auto at_impl(J) const -> decltype(at_detail<J::value>(&std::declval<vector_data const&>())) + typename store_at<J::value>::elem_type const& at_impl(J) const { - return at_detail<J::value>(this); + return store_at<J::value>::elem; } }; } // namespace boost::fusion::vector_detail diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/container/vector/vector_iterator.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/container/vector/vector_iterator.hpp index 33a68dae58..0e04b3452c 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/container/vector/vector_iterator.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/container/vector/vector_iterator.hpp @@ -41,7 +41,9 @@ namespace boost { namespace fusion vector_iterator(Vector& in_vec) : vec(in_vec) {} - vector_iterator(const vector_iterator& a) = default; + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + vector_iterator(vector_iterator const& rhs) + : vec(rhs.vec) {} Vector& vec; diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/sequence/comparison/enable_comparison.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/sequence/comparison/enable_comparison.hpp index 1279417714..b65c75529f 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/sequence/comparison/enable_comparison.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/sequence/comparison/enable_comparison.hpp @@ -20,13 +20,13 @@ namespace boost { namespace fusion { namespace traits { template <typename Seq1, typename Seq2, typename Enable = void> struct enable_equality - : mpl::or_<traits::is_sequence<Seq1>, traits::is_sequence<Seq2> > + : mpl::and_<traits::is_sequence<Seq1>, traits::is_sequence<Seq2> > {}; template <typename Seq1, typename Seq2, typename Enable = void> struct enable_comparison : mpl::and_< - mpl::or_<traits::is_sequence<Seq1>, traits::is_sequence<Seq2> > + traits::is_sequence<Seq1>, traits::is_sequence<Seq2> , mpl::equal_to<result_of::size<Seq1>, result_of::size<Seq2> > > {}; diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/sequence/intrinsic/at.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/sequence/intrinsic/at.hpp index a103e078a2..348a2e5fd7 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/sequence/intrinsic/at.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/sequence/intrinsic/at.hpp @@ -118,7 +118,7 @@ namespace boost { namespace fusion >::type at_c(Sequence& seq) { - return fusion::at<mpl::int_<N> >(seq); + return result_of::at_c<Sequence, N>::call(seq); } template <int N, typename Sequence> @@ -126,7 +126,7 @@ namespace boost { namespace fusion inline typename result_of::at_c<Sequence const, N>::type at_c(Sequence const& seq) { - return fusion::at<mpl::int_<N> >(seq); + return result_of::at_c<Sequence const, N>::call(seq); } }} diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/support/category_of.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/support/category_of.hpp index 92b0ea1b60..7397c45ad6 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/support/category_of.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/support/category_of.hpp @@ -8,7 +8,6 @@ #define FUSION_CATEGORY_OF_07202005_0308 #include <boost/fusion/support/config.hpp> -#include <boost/fusion/support/detail/category_of.hpp> #include <boost/fusion/support/tag_of.hpp> #include <boost/type_traits/is_base_of.hpp> @@ -44,7 +43,10 @@ namespace boost { namespace fusion struct category_of_impl { template<typename T> - struct apply : detail::fusion_category_of<T> {}; + struct apply + { + typedef typename T::category type; + }; }; template <> diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/support/config.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/support/config.hpp index 23554531b5..dc614d9d33 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/support/config.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/support/config.hpp @@ -1,6 +1,6 @@ /*============================================================================= Copyright (c) 2014 Eric Niebler - Copyright (c) 2014 Kohei Takahashi + Copyright (c) 2014,2015,2018 Kohei Takahashi 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) @@ -96,4 +96,35 @@ namespace std #define BOOST_FUSION_CONSTEXPR_THIS BOOST_CONSTEXPR #endif + +// Workaround for compilers not implementing N3031 (DR743 and DR950). +#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1913)) || \ + BOOST_WORKAROUND(BOOST_GCC, < 40700) || \ + defined(BOOST_CLANG) && (__clang_major__ == 3 && __clang_minor__ == 0) +# if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) +namespace boost { namespace fusion { namespace detail +{ + template <typename T> + using type_alias_t = T; +}}} +# define BOOST_FUSION_DECLTYPE_N3031(parenthesized_expr) \ + boost::fusion::detail::type_alias_t<decltype parenthesized_expr> +# else +# include <boost/mpl/identity.hpp> +# define BOOST_FUSION_DECLTYPE_N3031(parenthesized_expr) \ + boost::mpl::identity<decltype parenthesized_expr>::type +# endif +#else +# define BOOST_FUSION_DECLTYPE_N3031(parenthesized_expr) \ + decltype parenthesized_expr +#endif + + +// Workaround for GCC 4.6 that rejects defaulted function with noexcept. +#if BOOST_WORKAROUND(BOOST_GCC, / 100 == 406) +# define BOOST_FUSION_NOEXCEPT_ON_DEFAULTED +#else +# define BOOST_FUSION_NOEXCEPT_ON_DEFAULTED BOOST_NOEXCEPT +#endif + #endif diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/and.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/and.hpp index 1b310dda36..42926cb158 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/and.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/and.hpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2016 Lee Clagett + Copyright (c) 2018 Kohei Takahashi 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) @@ -8,6 +9,7 @@ #define FUSION_AND_07152016_1625 #include <boost/config.hpp> +#include <boost/config/workaround.hpp> #include <boost/type_traits/integral_constant.hpp> #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) @@ -15,6 +17,8 @@ #endif namespace boost { namespace fusion { namespace detail { +#if defined(BOOST_NO_CXX17_FOLD_EXPRESSIONS) \ + || BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1913)) template<typename ...Cond> struct and_impl : false_type {}; @@ -34,6 +38,10 @@ namespace boost { namespace fusion { namespace detail { recursive. */ template<typename ...Cond> struct and_ : and_impl1<Cond::value...> {}; +#else + template <typename ...Cond> + struct and_ : integral_constant<bool, ((bool)Cond::value && ...)> {}; +#endif }}} #endif // FUSION_AND_07152016_1625 diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/category_of.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/category_of.hpp deleted file mode 100644 index e7ac44e550..0000000000 --- a/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/category_of.hpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_CATEGORY_OF_07212005_1025) -#define FUSION_CATEGORY_OF_07212005_1025 - -namespace boost { namespace fusion { namespace detail -{ - template <typename T> - struct fusion_category_of - { - typedef typename T::category type; - }; -}}} - -#endif diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/is_mpl_sequence.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/is_mpl_sequence.hpp index 24b8662402..16b6db1235 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/is_mpl_sequence.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/is_mpl_sequence.hpp @@ -9,19 +9,17 @@ #define FUSION_DETAIL_IS_MPL_SEQUENCE_29122006_1105 #include <boost/fusion/support/config.hpp> -#include <boost/fusion/support/sequence_base.hpp> +#include <boost/fusion/support/detail/is_native_fusion_sequence.hpp> #include <boost/mpl/is_sequence.hpp> #include <boost/mpl/and.hpp> #include <boost/mpl/not.hpp> -#include <boost/type_traits/is_complete.hpp> -#include <boost/type_traits/is_convertible.hpp> namespace boost { namespace fusion { namespace detail { template <typename T> struct is_mpl_sequence : mpl::and_< - mpl::not_<mpl::and_<is_complete<T>, is_convertible<T, from_sequence_convertible_type> > > + mpl::not_<is_native_fusion_sequence<T> > , mpl::is_sequence<T> > {}; }}} diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/is_native_fusion_sequence.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/is_native_fusion_sequence.hpp new file mode 100644 index 0000000000..189c784dab --- /dev/null +++ b/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/is_native_fusion_sequence.hpp @@ -0,0 +1,27 @@ +/*============================================================================= + Copyright (c) 2018 Kohei Takahashi + + 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) +==============================================================================*/ +#ifndef BOOST_FUSION_IS_NATIVE_FUSION_SEQUENCE +#define BOOST_FUSION_IS_NATIVE_FUSION_SEQUENCE + +#include <boost/fusion/support/config.hpp> +#include <boost/fusion/support/sequence_base.hpp> +#include <boost/mpl/and.hpp> +#include <boost/type_traits/is_complete.hpp> +#include <boost/type_traits/is_convertible.hpp> + +namespace boost { namespace fusion { namespace detail +{ + template <typename Sequence> + struct is_native_fusion_sequence + : mpl::and_< + is_complete<Sequence> + , is_convertible<Sequence, detail::from_sequence_convertible_type> + > + {}; +}}} + +#endif diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/is_view.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/is_view.hpp deleted file mode 100644 index c518dfc460..0000000000 --- a/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/is_view.hpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_IS_VIEW_03202006_0018) -#define FUSION_IS_VIEW_03202006_0018 - -namespace boost { namespace fusion { namespace detail -{ - template <typename T> - struct fusion_is_view - { - typedef typename T::is_view type; - }; -}}} - -#endif diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/support/is_sequence.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/support/is_sequence.hpp index af7c84e1d4..95a9423f94 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/support/is_sequence.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/support/is_sequence.hpp @@ -10,13 +10,10 @@ #include <boost/fusion/support/config.hpp> #include <boost/fusion/support/sequence_base.hpp> #include <boost/fusion/support/tag_of.hpp> -#include <boost/mpl/and.hpp> +#include <boost/fusion/support/detail/is_native_fusion_sequence.hpp> #include <boost/mpl/bool.hpp> #include <boost/mpl/is_sequence.hpp> -#include <boost/mpl/or.hpp> -#include <boost/type_traits/is_complete.hpp> #include <boost/type_traits/is_convertible.hpp> -#include <boost/type_traits/is_same.hpp> namespace boost { namespace fusion { @@ -69,13 +66,7 @@ namespace boost { namespace fusion > {}; - template <typename Sequence, typename Enable = void> - struct is_native_fusion_sequence - : mpl::and_< - is_complete<Sequence>, - is_convertible<Sequence, fusion::detail::from_sequence_convertible_type> - > - {}; + using detail::is_native_fusion_sequence; } }} diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/support/is_view.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/support/is_view.hpp index c54e60e19b..b2b52c423e 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/support/is_view.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/support/is_view.hpp @@ -9,12 +9,12 @@ #include <boost/fusion/support/config.hpp> #include <boost/mpl/bool.hpp> -#include <boost/fusion/support/detail/is_view.hpp> #include <boost/fusion/support/tag_of.hpp> namespace boost { namespace fusion { // Special tags: + struct non_fusion_tag; struct sequence_facade_tag; struct boost_tuple_tag; // boost::tuples::tuple tag struct boost_array_tag; // boost::array tag @@ -28,8 +28,16 @@ namespace boost { namespace fusion { template <typename T> struct apply - : detail::fusion_is_view<T> - {}; + { + typedef typename T::is_view type; + }; + }; + + template <> + struct is_view_impl<non_fusion_tag> + { + template <typename T> + struct apply : mpl::false_ {}; }; template <> diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/support/unused.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/support/unused.hpp index 964839ab25..8947adea47 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/support/unused.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/support/unused.hpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2018 Kohei Takahashi 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) @@ -10,7 +11,6 @@ #include <boost/fusion/support/config.hpp> #include <iosfwd> -#include <boost/config.hpp> #if defined(BOOST_MSVC) # pragma warning(push) # pragma warning(disable: 4522) // multiple assignment operators specified warning @@ -23,45 +23,16 @@ namespace boost { namespace fusion struct unused_type { BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - unused_type() BOOST_NOEXCEPT + BOOST_DEFAULTED_FUNCTION( + unused_type() BOOST_FUSION_NOEXCEPT_ON_DEFAULTED, { - } + }) template <typename T> BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED unused_type(T const&) BOOST_NOEXCEPT { } - - template <typename T> - BOOST_FUSION_CONSTEXPR_THIS BOOST_FUSION_GPU_ENABLED - unused_type const& - operator=(T const&) const BOOST_NOEXCEPT - { - return *this; - } - - template <typename T> - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - unused_type& - operator=(T const&) BOOST_NOEXCEPT - { - return *this; - } - - BOOST_FUSION_CONSTEXPR_THIS BOOST_FUSION_GPU_ENABLED - unused_type const& - operator=(unused_type const&) const BOOST_NOEXCEPT - { - return *this; - } - - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - unused_type& - operator=(unused_type const&) BOOST_NOEXCEPT - { - return *this; - } }; BOOST_CONSTEXPR_OR_CONST unused_type unused = unused_type(); diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/filter_view/detail/next_impl.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/filter_view/detail/next_impl.hpp index 4f17455766..bd1404b9f0 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/view/filter_view/detail/next_impl.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/view/filter_view/detail/next_impl.hpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2018 Kohei Takahashi 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) @@ -8,14 +9,10 @@ #define FUSION_NEXT_IMPL_06052005_0900 #include <boost/fusion/support/config.hpp> -#include <boost/fusion/algorithm/query/detail/find_if.hpp> -#include <boost/fusion/iterator/value_of.hpp> +#include <boost/fusion/iterator/next.hpp> +#include <boost/fusion/iterator/equal_to.hpp> #include <boost/mpl/eval_if.hpp> #include <boost/mpl/identity.hpp> -#include <boost/mpl/lambda.hpp> -#include <boost/mpl/quote.hpp> -#include <boost/mpl/bind.hpp> -#include <boost/mpl/placeholders.hpp> namespace boost { namespace fusion { @@ -48,26 +45,13 @@ namespace boost { namespace fusion >::type next_type; - typedef typename - detail::static_find_if< - next_type - , last_type - , mpl::bind1< - typename mpl::lambda<pred_type>::type - , mpl::bind1<mpl::quote1<result_of::value_of>,mpl::_1> - > - > - filter; - - typedef filter_iterator< - category, typename filter::type, last_type, pred_type> - type; + typedef filter_iterator<category, next_type, last_type, pred_type> type; BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { - return type(filter::iter_call(i.first)); + return type(fusion::next(i.first)); } }; }; diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/filter_view/filter_view.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/filter_view/filter_view.hpp index 4212a1fc8f..b9b7e7fc44 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/view/filter_view/filter_view.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/view/filter_view/filter_view.hpp @@ -52,6 +52,11 @@ namespace boost { namespace fusion {} BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + filter_view(filter_view const& rhs) + : seq(rhs.seq) + {} + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED first_type first() const { return fusion::begin(seq); } BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED last_type last() const { return fusion::end(seq); } @@ -59,7 +64,6 @@ namespace boost { namespace fusion // silence MSVC warning C4512: assignment operator could not be generated BOOST_DELETED_FUNCTION(filter_view& operator= (filter_view const&)) - filter_view(const filter_view&) = default; }; }} diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/filter_view/filter_view_iterator.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/filter_view/filter_view_iterator.hpp index ed2cbe5183..05eda69b8c 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/view/filter_view/filter_view_iterator.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/view/filter_view/filter_view_iterator.hpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2018 Kohei Takahashi 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) @@ -9,7 +10,6 @@ #include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/mpl/convert_iterator.hpp> -#include <boost/fusion/adapted/mpl/mpl_iterator.hpp> #include <boost/fusion/iterator/value_of.hpp> #include <boost/fusion/support/iterator_base.hpp> #include <boost/fusion/algorithm/query/detail/find_if.hpp> @@ -59,11 +59,14 @@ namespace boost { namespace fusion filter_iterator(First const& in_first) : first(filter::iter_call(first_converter::call(in_first))) {} + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + filter_iterator(filter_iterator const& rhs) + : first(rhs.first) {} + first_type first; // silence MSVC warning C4512: assignment operator could not be generated BOOST_DELETED_FUNCTION(filter_iterator& operator= (filter_iterator const&)) - filter_iterator(const filter_iterator&) = default; }; }} diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/single_view/single_view_iterator.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/single_view/single_view_iterator.hpp index 0f3e2744b5..0de6c84261 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/view/single_view/single_view_iterator.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/view/single_view/single_view_iterator.hpp @@ -20,11 +20,6 @@ #include <boost/fusion/view/single_view/detail/value_of_impl.hpp> #include <boost/config.hpp> -#if defined (BOOST_MSVC) -# pragma warning(push) -# pragma warning (disable: 4512) // assignment operator could not be generated. -#endif - namespace boost { namespace fusion { struct single_view_iterator_tag; @@ -46,8 +41,7 @@ namespace boost { namespace fusion SingleView& view; - private: - single_view_iterator& operator=(single_view_iterator const&); + BOOST_DELETED_FUNCTION(single_view_iterator& operator=(single_view_iterator const&)) }; }} @@ -60,10 +54,6 @@ namespace std } #endif -#if defined (BOOST_MSVC) -# pragma warning(pop) -#endif - #endif diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/apply_transform_result.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/apply_transform_result.hpp deleted file mode 100644 index 87c057f231..0000000000 --- a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/apply_transform_result.hpp +++ /dev/null @@ -1,38 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2007 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_APPLY_TRANSFORM_RESULT_02092006_1936) -#define BOOST_FUSION_APPLY_TRANSFORM_RESULT_02092006_1936 - -#include <boost/fusion/support/config.hpp> -#include <boost/utility/result_of.hpp> - -namespace boost { namespace fusion -{ - struct void_; - - namespace detail - { - template <typename F> - struct apply_transform_result - { - template <typename T0, typename T1 = void_> - struct apply - : boost::result_of<F(T0, T1)> - {}; - - template <typename T0> - struct apply<T0, void_> - : boost::result_of<F(T0)> - {}; - }; - } -}} - -#endif - - diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/at_impl.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/at_impl.hpp index d2045bc280..3723e86a8a 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/at_impl.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/at_impl.hpp @@ -1,6 +1,7 @@ /*============================================================================= Copyright (c) 2001-2011 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2018 Kohei Takahashi 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) @@ -9,9 +10,8 @@ #define BOOST_FUSION_AT_IMPL_20061029_1946 #include <boost/fusion/support/config.hpp> -#include <boost/mpl/apply.hpp> -#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp> #include <boost/fusion/sequence/intrinsic/at.hpp> +#include <boost/utility/result_of.hpp> namespace boost { namespace fusion { struct transform_view_tag; @@ -29,9 +29,8 @@ namespace boost { namespace fusion { struct apply { typedef typename Seq::transform_type F; - typedef detail::apply_transform_result<F> transform_type; - typedef typename boost::fusion::result_of::at<typename Seq::sequence_type, N>::type value_type; - typedef typename mpl::apply<transform_type, value_type>::type type; + typedef typename result_of::at<typename Seq::sequence_type, N>::type value_type; + typedef typename boost::result_of<F(value_type)>::type type; BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) @@ -48,10 +47,9 @@ namespace boost { namespace fusion { struct apply { typedef typename Seq::transform_type F; - typedef detail::apply_transform_result<F> transform_type; - typedef typename boost::fusion::result_of::at<typename Seq::sequence1_type, N>::type value1_type; - typedef typename boost::fusion::result_of::at<typename Seq::sequence2_type, N>::type value2_type; - typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type; + typedef typename result_of::at<typename Seq::sequence1_type, N>::type value1_type; + typedef typename result_of::at<typename Seq::sequence2_type, N>::type value2_type; + typedef typename boost::result_of<F(value1_type, value2_type)>::type type; BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/deref_impl.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/deref_impl.hpp index 646da57c22..b94d4a800b 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/deref_impl.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/deref_impl.hpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2018 Kohei Takahashi 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) @@ -8,10 +9,8 @@ #define FUSION_DEREF_IMPL_07162005_1026 #include <boost/fusion/support/config.hpp> -#include <boost/mpl/apply.hpp> #include <boost/fusion/iterator/deref.hpp> -#include <boost/fusion/iterator/value_of.hpp> -#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp> +#include <boost/utility/result_of.hpp> namespace boost { namespace fusion { @@ -34,8 +33,8 @@ namespace boost { namespace fusion result_of::deref<typename Iterator::first_type>::type value_type; - typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type; - typedef typename mpl::apply<transform_type, value_type>::type type; + typedef typename Iterator::transform_type F; + typedef typename boost::result_of<F(value_type)>::type type; BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED static type @@ -60,8 +59,8 @@ namespace boost { namespace fusion result_of::deref<typename Iterator::first2_type>::type value2_type; - typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type; - typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type; + typedef typename Iterator::transform_type F; + typedef typename boost::result_of<F(value1_type, value2_type)>::type type; BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED static type @@ -70,7 +69,7 @@ namespace boost { namespace fusion return i.f(*i.first1, *i.first2); } }; - }; + }; } }} diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/value_at_impl.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/value_at_impl.hpp index 6875cbed08..932dcf63ce 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/value_at_impl.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/value_at_impl.hpp @@ -1,6 +1,7 @@ /*============================================================================= Copyright (c) 2001-2011 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2018 Kohei Takahashi 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) @@ -9,9 +10,8 @@ #define BOOST_FUSION_VALUE_AT_IMPL_20061101_0745 #include <boost/fusion/support/config.hpp> -#include <boost/mpl/apply.hpp> -#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp> #include <boost/fusion/sequence/intrinsic/value_at.hpp> +#include <boost/utility/result_of.hpp> namespace boost { namespace fusion { struct transform_view_tag; @@ -29,9 +29,8 @@ namespace boost { namespace fusion { struct apply { typedef typename Seq::transform_type F; - typedef detail::apply_transform_result<F> transform_type; - typedef typename boost::fusion::result_of::value_at<typename Seq::sequence_type, N>::type value_type; - typedef typename mpl::apply<transform_type, value_type>::type type; + typedef typename result_of::value_at<typename Seq::sequence_type, N>::type value_type; + typedef typename boost::result_of<F(value_type)>::type type; }; }; @@ -42,10 +41,9 @@ namespace boost { namespace fusion { struct apply { typedef typename Seq::transform_type F; - typedef detail::apply_transform_result<F> transform_type; - typedef typename boost::fusion::result_of::value_at<typename Seq::sequence1_type, N>::type value1_type; - typedef typename boost::fusion::result_of::value_at<typename Seq::sequence2_type, N>::type value2_type; - typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type; + typedef typename result_of::value_at<typename Seq::sequence1_type, N>::type value1_type; + typedef typename result_of::value_at<typename Seq::sequence2_type, N>::type value2_type; + typedef typename boost::result_of<F(value1_type, value2_type)>::type type; }; }; } diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/value_of_impl.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/value_of_impl.hpp index ae20cd4ba1..2bf4a508b0 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/value_of_impl.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/value_of_impl.hpp @@ -1,5 +1,6 @@ /*============================================================================= Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2018 Kohei Takahashi 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) @@ -8,9 +9,8 @@ #define FUSION_VALUE_OF_IMPL_07162005_1030 #include <boost/fusion/support/config.hpp> -#include <boost/mpl/apply.hpp> #include <boost/fusion/iterator/value_of.hpp> -#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp> +#include <boost/utility/result_of.hpp> namespace boost { namespace fusion { @@ -33,8 +33,8 @@ namespace boost { namespace fusion result_of::value_of<typename Iterator::first_type>::type value_type; - typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type; - typedef typename mpl::apply<transform_type, value_type>::type type; + typedef typename Iterator::transform_type F; + typedef typename boost::result_of<F(value_type)>::type type; }; }; @@ -52,8 +52,8 @@ namespace boost { namespace fusion result_of::value_of<typename Iterator::first2_type>::type value2_type; - typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type; - typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type; + typedef typename Iterator::transform_type F; + typedef typename boost::result_of<F(value1_type, value2_type)>::type type; }; }; } |