aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-contrib <robot-contrib@yandex-team.com>2022-09-24 22:55:11 +0300
committerrobot-contrib <robot-contrib@yandex-team.com>2022-09-24 22:55:11 +0300
commit6b254be726eace55892901d6cb7bdd1d039ce2b6 (patch)
treef8b62f9422d005f96e653281e9e921354db025e7
parent3299297793246023532c2fcd8e08baaaf7e1006a (diff)
downloadydb-6b254be726eace55892901d6cb7bdd1d039ce2b6.tar.gz
Update contrib/restricted/boost/fusion to 1.80.0
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp2
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/detail/for_each.hpp16
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp6
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/for_each.hpp19
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/for_each_fwd.hpp19
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/algorithm/query/detail/find_if.hpp29
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/container/deque/deque_iterator.hpp1
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/container/deque/detail/keyed_element.hpp12
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/container/list/cons.hpp4
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/container/list/cons_iterator.hpp1
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/container/map/detail/map_impl.hpp206
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/container/map/map_fwd.hpp2
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/container/vector/detail/value_at_impl.hpp16
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/container/vector/vector.hpp31
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/container/vector/vector_iterator.hpp4
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/sequence/comparison/enable_comparison.hpp4
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/sequence/intrinsic/at.hpp4
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/support/category_of.hpp6
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/support/config.hpp33
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/support/detail/and.hpp8
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/support/detail/category_of.hpp19
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/support/detail/is_mpl_sequence.hpp6
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/support/detail/is_native_fusion_sequence.hpp27
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/support/detail/is_view.hpp19
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/support/is_sequence.hpp13
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/support/is_view.hpp14
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/support/unused.hpp37
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/view/filter_view/detail/next_impl.hpp26
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/view/filter_view/filter_view.hpp6
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/view/filter_view/filter_view_iterator.hpp7
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/view/single_view/single_view_iterator.hpp12
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/apply_transform_result.hpp38
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/at_impl.hpp16
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/deref_impl.hpp15
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/value_at_impl.hpp16
-rw-r--r--contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/value_of_impl.hpp12
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;
};
};
}