diff options
author | thegeorg <thegeorg@yandex-team.com> | 2022-12-30 11:28:43 +0300 |
---|---|---|
committer | thegeorg <thegeorg@yandex-team.com> | 2022-12-30 11:28:43 +0300 |
commit | 3977356602f8b92ede8c377d29e965a3a61fb584 (patch) | |
tree | c338a8c5387f0e508b08bec2933f92ee10695fc5 | |
parent | 1a5a2b27e7c76da1d9e921121f480fad8989a961 (diff) | |
download | ydb-3977356602f8b92ede8c377d29e965a3a61fb584.tar.gz |
Update contrib/restricted/boost/fusion to 1.81.0
25 files changed, 332 insertions, 70 deletions
diff --git a/contrib/restricted/boost/fusion/CMakeLists.darwin.txt b/contrib/restricted/boost/fusion/CMakeLists.darwin.txt index 157f45712f..dc891e04c7 100644 --- a/contrib/restricted/boost/fusion/CMakeLists.darwin.txt +++ b/contrib/restricted/boost/fusion/CMakeLists.darwin.txt @@ -17,6 +17,7 @@ target_link_libraries(restricted-boost-fusion INTERFACE restricted-boost-container_hash restricted-boost-core restricted-boost-function_types + restricted-boost-functional restricted-boost-mpl restricted-boost-preprocessor restricted-boost-static_assert diff --git a/contrib/restricted/boost/fusion/CMakeLists.linux-aarch64.txt b/contrib/restricted/boost/fusion/CMakeLists.linux-aarch64.txt index 54fc2f4013..c27e4dd580 100644 --- a/contrib/restricted/boost/fusion/CMakeLists.linux-aarch64.txt +++ b/contrib/restricted/boost/fusion/CMakeLists.linux-aarch64.txt @@ -18,6 +18,7 @@ target_link_libraries(restricted-boost-fusion INTERFACE restricted-boost-container_hash restricted-boost-core restricted-boost-function_types + restricted-boost-functional restricted-boost-mpl restricted-boost-preprocessor restricted-boost-static_assert diff --git a/contrib/restricted/boost/fusion/CMakeLists.linux.txt b/contrib/restricted/boost/fusion/CMakeLists.linux.txt index 54fc2f4013..c27e4dd580 100644 --- a/contrib/restricted/boost/fusion/CMakeLists.linux.txt +++ b/contrib/restricted/boost/fusion/CMakeLists.linux.txt @@ -18,6 +18,7 @@ target_link_libraries(restricted-boost-fusion INTERFACE restricted-boost-container_hash restricted-boost-core restricted-boost-function_types + restricted-boost-functional restricted-boost-mpl restricted-boost-preprocessor restricted-boost-static_assert 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 88206590a9..024d8720c3 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 @@ -45,6 +45,10 @@ namespace boost { namespace fusion template <typename Cons> struct boost_tuple_iterator_identity; +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif template <typename Cons = tuples::null_type> struct boost_tuple_iterator : iterator_facade<boost_tuple_iterator<Cons>, forward_traversal_tag> @@ -143,11 +147,10 @@ namespace boost { namespace fusion struct equal_to : is_same<typename I1::identity, typename I2::identity> {}; - - // silence MSVC warning C4512: assignment operator could not be generated - BOOST_DELETED_FUNCTION(boost_tuple_iterator& operator= (boost_tuple_iterator const&)) - boost_tuple_iterator(const boost_tuple_iterator&) = default; }; +#ifdef _MSC_VER +# pragma warning(pop) +#endif template <typename Null> struct boost_tuple_null_iterator diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/detail/segmented_fold.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/detail/segmented_fold.hpp index 350bff75b3..663c6fedd1 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/detail/segmented_fold.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/iteration/detail/segmented_fold.hpp @@ -14,6 +14,10 @@ namespace boost { namespace fusion { namespace detail { +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif template <typename Fun> struct segmented_fold_fun { @@ -37,6 +41,9 @@ namespace boost { namespace fusion { namespace detail } }; }; +#ifdef _MSC_VER +# pragma warning(pop) +#endif // The default implementation of this lives in detail/fold.hpp template <typename Sequence, typename State, typename Fun, bool IsSequence, bool IsSegmented> 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 7b299f869c..404ba2a0d2 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 @@ -13,6 +13,11 @@ #include <boost/fusion/algorithm/iteration/for_each_fwd.hpp> #include <boost/fusion/support/segmented_fold_until.hpp> +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { namespace detail { template <typename Fun> @@ -49,4 +54,8 @@ namespace boost { namespace fusion { namespace detail } }}} +#ifdef _MSC_VER +# pragma warning(pop) +#endif + #endif diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/transformation/pop_back.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/transformation/pop_back.hpp index 2f55fa5e72..9a7e754704 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/transformation/pop_back.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/algorithm/transformation/pop_back.hpp @@ -18,6 +18,11 @@ #include <boost/mpl/int.hpp> #include <boost/mpl/if.hpp> +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { template <typename Iterator_, bool IsLast> @@ -168,5 +173,9 @@ namespace boost { namespace fusion } }} +#ifdef _MSC_VER +# pragma warning(pop) +#endif + #endif 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..66fd635da1 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 @@ -20,6 +20,11 @@ #include <boost/type_traits/add_const.hpp> #include <boost/type_traits/add_reference.hpp> +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { struct bidirectional_traversal_tag; @@ -110,14 +115,14 @@ namespace boost { namespace fusion { {}; Seq& seq_; - - // 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; }; }} +#ifdef _MSC_VER +# pragma warning(pop) +#endif + #ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408 namespace std { 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..f6655a705b 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 @@ -26,6 +26,10 @@ namespace boost { namespace fusion template <typename Cons> struct cons_iterator_identity; +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif template <typename Cons = nil_> struct cons_iterator : iterator_base<cons_iterator<Cons> > { @@ -41,11 +45,10 @@ namespace boost { namespace fusion : cons(in_cons) {} cons_type& cons; - - // 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; }; +#ifdef _MSC_VER +# pragma warning(pop) +#endif struct nil_iterator : iterator_base<nil_iterator> { 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 02ffe51450..f20e1de0b0 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 @@ -220,21 +220,12 @@ namespace boost { namespace fusion void assign_sequence(Sequence&& seq) { - assign(std::forward<Sequence>(seq), detail::index_sequence<I...>()); - } - - template <typename Sequence> - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - void - assign(Sequence&&, detail::index_sequence<>) {} - - template <typename Sequence, std::size_t N, std::size_t ...M> - BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED - void - assign(Sequence&& seq, detail::index_sequence<N, M...>) - { - at_impl(mpl::int_<N>()) = vector_detail::forward_at_c<N>(seq); - assign(std::forward<Sequence>(seq), detail::index_sequence<M...>()); +#ifndef BOOST_NO_CXX17_FOLD_EXPRESSIONS + (void(store<I, T>::elem = vector_detail::forward_at_c<I>(static_cast<Sequence&&>(seq))), ...); +#else + int nofold[] = { (void(store<I, T>::elem = vector_detail::forward_at_c<I>(static_cast<Sequence&&>(seq))), 0)..., 0 }; + (void)nofold; +#endif } private: 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 0e04b3452c..62219766a5 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 @@ -19,6 +19,11 @@ #include <boost/type_traits/add_const.hpp> #include <boost/mpl/int.hpp> +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { struct vector_iterator_tag; @@ -41,17 +46,14 @@ namespace boost { namespace fusion vector_iterator(Vector& in_vec) : vec(in_vec) {} - BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED - vector_iterator(vector_iterator const& rhs) - : vec(rhs.vec) {} - Vector& vec; - - // silence MSVC warning C4512: assignment operator could not be generated - BOOST_DELETED_FUNCTION(vector_iterator& operator= (vector_iterator const&)) }; }} +#ifdef _MSC_VER +# pragma warning(pop) +#endif + #ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408 namespace std { diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/iterator/detail/segment_sequence.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/iterator/detail/segment_sequence.hpp index 8b8d5c13f4..8b45cc1305 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/iterator/detail/segment_sequence.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/iterator/detail/segment_sequence.hpp @@ -13,6 +13,11 @@ #include <boost/fusion/support/tag_of.hpp> #include <boost/fusion/sequence/intrinsic_fwd.hpp> +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { namespace detail { struct segment_sequence_tag {}; @@ -36,6 +41,10 @@ namespace boost { namespace fusion { namespace detail }; } +#ifdef _MSC_VER +# pragma warning(pop) +#endif + namespace extension { template<typename Tag> diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/iterator/iterator_adapter.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/iterator/iterator_adapter.hpp index de8938f6ce..999d57b2b1 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/iterator/iterator_adapter.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/iterator/iterator_adapter.hpp @@ -19,6 +19,11 @@ #include <boost/fusion/iterator/value_of.hpp> #include <boost/type_traits/remove_const.hpp> +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { template <typename Derived_, typename Iterator_, @@ -135,6 +140,10 @@ namespace boost { namespace fusion }; }} +#ifdef _MSC_VER +# pragma warning(pop) +#endif + #ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408 namespace std { 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 dc614d9d33..7c87adeb97 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/support/config.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/support/config.hpp @@ -127,4 +127,14 @@ namespace boost { namespace fusion { namespace detail # define BOOST_FUSION_NOEXCEPT_ON_DEFAULTED BOOST_NOEXCEPT #endif +#ifdef _MSC_VER +# define BOOST_FUSION_PUSH_WARNINGS __pragma(warning(push)) +# define BOOST_FUSION_POP_WARNINGS __pragma(warning(pop)) +# define BOOST_FUSION_DISABLE_MSVC_WARNING(num) __pragma(warning(disable : num)) +#else +# define BOOST_FUSION_PUSH_WARNINGS +# define BOOST_FUSION_POP_WARNINGS +# define BOOST_FUSION_DISABLE_MSVC_WARNING(num) +#endif + #endif diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/as_fusion_element.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/as_fusion_element.hpp index 2af960eedf..08f4db9238 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/as_fusion_element.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/support/detail/as_fusion_element.hpp @@ -9,7 +9,7 @@ #define FUSION_AS_FUSION_ELEMENT_05052005_0338 #include <boost/fusion/support/config.hpp> -#include <boost/ref.hpp> +#include <boost/core/ref.hpp> #ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL #include <functional> 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 b9b7e7fc44..c4e05e8d92 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 @@ -22,6 +22,11 @@ #include <boost/mpl/inherit.hpp> #include <boost/mpl/identity.hpp> +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { struct filter_view_tag; @@ -52,21 +57,17 @@ 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); } typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq; - - // silence MSVC warning C4512: assignment operator could not be generated - BOOST_DELETED_FUNCTION(filter_view& operator= (filter_view const&)) }; }} +#ifdef _MSC_VER +# pragma warning(pop) +#endif + #endif 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 05eda69b8c..7a907f50e7 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 @@ -26,6 +26,11 @@ #include <boost/fusion/view/filter_view/detail/value_of_data_impl.hpp> #include <boost/fusion/view/filter_view/detail/key_of_impl.hpp> +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { struct filter_view_iterator_tag; @@ -59,17 +64,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&)) }; }} +#ifdef _MSC_VER +# pragma warning(pop) +#endif + #ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408 namespace std { diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/joint_view/joint_view.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/joint_view/joint_view.hpp index 03e38d694c..1cf6d0d573 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/view/joint_view/joint_view.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/view/joint_view/joint_view.hpp @@ -25,6 +25,11 @@ #include <boost/mpl/inherit.hpp> #include <boost/mpl/identity.hpp> +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { struct joint_view_tag; @@ -69,15 +74,16 @@ namespace boost { namespace fusion BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED concat_last_type concat_last() const { return fusion::end(seq2); } - // silence MSVC warning C4512: assignment operator could not be generated - BOOST_DELETED_FUNCTION(joint_view& operator= (joint_view const&)) - private: typename mpl::if_<traits::is_view<Sequence1>, Sequence1, Sequence1&>::type seq1; typename mpl::if_<traits::is_view<Sequence2>, Sequence2, Sequence2&>::type seq2; }; }} +#ifdef _MSC_VER +# pragma warning(pop) +#endif + #endif diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/joint_view/joint_view_iterator.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/joint_view/joint_view_iterator.hpp index f6db30915e..1b446189b5 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/view/joint_view/joint_view_iterator.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/view/joint_view/joint_view_iterator.hpp @@ -20,6 +20,11 @@ #include <boost/fusion/view/joint_view/detail/key_of_impl.hpp> #include <boost/static_assert.hpp> +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { struct joint_view_iterator_tag; @@ -49,12 +54,13 @@ namespace boost { namespace fusion first_type first; concat_type concat; - - // silence MSVC warning C4512: assignment operator could not be generated - BOOST_DELETED_FUNCTION(joint_view_iterator& operator= (joint_view_iterator const&)) }; }} +#ifdef _MSC_VER +# pragma warning(pop) +#endif + #ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408 namespace std { 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 0de6c84261..38c25ed578 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,6 +20,11 @@ #include <boost/fusion/view/single_view/detail/value_of_impl.hpp> #include <boost/config.hpp> +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { struct single_view_iterator_tag; @@ -40,11 +45,13 @@ namespace boost { namespace fusion : view(in_view) {} SingleView& view; - - BOOST_DELETED_FUNCTION(single_view_iterator& operator=(single_view_iterator const&)) }; }} +#ifdef _MSC_VER +# pragma warning(pop) +#endif + #ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408 namespace std { diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/deref_data_impl.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/deref_data_impl.hpp new file mode 100644 index 0000000000..95671eceda --- /dev/null +++ b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/deref_data_impl.hpp @@ -0,0 +1,73 @@ +/*============================================================================= + Copyright (c) 2022 Denis Mikhailov + 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_TRANSFORM_VIEW_DEREF_DATA_IMPL_JAN_9_2022_0354PM) +#define BOOST_FUSION_TRANSFORM_VIEW_DEREF_DATA_IMPL_JAN_9_2022_0354PM + +#include <boost/fusion/support/config.hpp> +#include <boost/fusion/iterator/deref.hpp> +#include <boost/type_traits/remove_reference.hpp> +#include <boost/type_traits/remove_const.hpp> +#include <boost/type_traits/add_reference.hpp> +#include <boost/type_traits/add_const.hpp> +#include <boost/type_traits/is_reference.hpp> +#include <boost/type_traits/is_const.hpp> +#include <boost/utility/result_of.hpp> +#include <boost/mpl/if.hpp> + +namespace boost { namespace fusion +{ + struct transform_view_iterator_tag; + struct transform_view_iterator2_tag; + + namespace extension + { + template<typename Tag> + struct deref_data_impl; + + // Unary Version + template<> + struct deref_data_impl<transform_view_iterator_tag> + { + template <typename Iterator> + struct apply + { + typedef typename + result_of::deref<typename Iterator::first_type>::type + value_type; + + typedef typename Iterator::transform_type F; + typedef typename boost::result_of<F(value_type)>::type transformed_type; + typedef typename boost::remove_reference<transformed_type>::type transformed_type_unref; + typedef typename boost::remove_const<transformed_type_unref>::type transformed_type_unconst; + + typedef typename transformed_type_unconst::second_type raw_type; + typedef typename + boost::mpl::if_< + is_reference<transformed_type> + , typename boost::mpl::if_< + is_const<transformed_type_unref> + , typename boost::add_reference<typename boost::add_const<raw_type>::type>::type + , typename boost::add_reference<raw_type>::type + >::type + , raw_type + >::type + type; + + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED + static type + call(Iterator const& i) + { + return i.f(fusion::deref(i.first)).second; + } + }; + }; + + // Binary Version is not supported with Associative Sequence + } +}} + +#endif diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/key_of_impl.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/key_of_impl.hpp new file mode 100644 index 0000000000..2800e11dc1 --- /dev/null +++ b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/key_of_impl.hpp @@ -0,0 +1,49 @@ +/*============================================================================= + Copyright (c) 2022 Denis Mikhailov + 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_TRANSFORM_VIEW_KEY_OF_IMPL_JAN_9_2022_0354PM) +#define BOOST_FUSION_TRANSFORM_VIEW_KEY_OF_IMPL_JAN_9_2022_0354PM + +#include <boost/fusion/support/config.hpp> +#include <boost/fusion/iterator/deref.hpp> +#include <boost/type_traits/remove_reference.hpp> +#include <boost/type_traits/remove_const.hpp> +#include <boost/utility/result_of.hpp> + +namespace boost { namespace fusion +{ + struct transform_view_iterator_tag; + struct transform_view_iterator2_tag; + + namespace extension + { + template<typename Tag> + struct key_of_impl; + + // Unary Version + template<> + struct key_of_impl<transform_view_iterator_tag> + { + template <typename Iterator> + struct apply + { + typedef typename + result_of::deref<typename Iterator::first_type>::type + value_type; + + typedef typename Iterator::transform_type F; + typedef typename boost::result_of<F(value_type)>::type transformed_type; + typedef typename boost::remove_reference<transformed_type>::type transformed_type_unref; + typedef typename boost::remove_const<transformed_type_unref>::type transformed_type_unconst; + + typedef typename transformed_type_unconst::first_type type; + }; + }; + + // Binary Version is not supported with Associative Sequence + } +}} +#endif diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/value_of_data_impl.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/value_of_data_impl.hpp new file mode 100644 index 0000000000..dc3f1e5564 --- /dev/null +++ b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/detail/value_of_data_impl.hpp @@ -0,0 +1,49 @@ +/*============================================================================= + Copyright (c) 2022 Denis Mikhailov + 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_TRANSFORM_VIEW_VALUE_OF_IMPL_JAN_9_2022_0354PM) +#define BOOST_FUSION_TRANSFORM_VIEW_VALUE_OF_IMPL_JAN_9_2022_0354PM + +#include <boost/fusion/support/config.hpp> +#include <boost/fusion/iterator/deref.hpp> +#include <boost/type_traits/remove_reference.hpp> +#include <boost/type_traits/remove_const.hpp> +#include <boost/utility/result_of.hpp> + +namespace boost { namespace fusion +{ + struct transform_view_iterator_tag; + struct transform_view_iterator2_tag; + + namespace extension + { + template<typename Tag> + struct value_of_data_impl; + + // Unary Version + template<> + struct value_of_data_impl<transform_view_iterator_tag> + { + template <typename Iterator> + struct apply + { + typedef typename + result_of::deref<typename Iterator::first_type>::type + value_type; + + typedef typename Iterator::transform_type F; + typedef typename boost::result_of<F(value_type)>::type transformed_type; + typedef typename boost::remove_reference<transformed_type>::type transformed_type_unref; + typedef typename boost::remove_const<transformed_type_unref>::type transformed_type_unconst; + + typedef typename transformed_type_unconst::second_type type; + }; + }; + + // Binary Version is not supported with Associative Sequence + } +}} +#endif diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/transform_view.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/transform_view.hpp index f0633018ee..901fe362ad 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/transform_view.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/transform_view.hpp @@ -27,6 +27,11 @@ #include <boost/fusion/sequence/intrinsic/size.hpp> #include <boost/mpl/bool.hpp> +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif + namespace boost { namespace fusion { struct void_; @@ -75,9 +80,6 @@ namespace boost { namespace fusion transform_type f; typename mpl::if_<traits::is_view<Sequence1>, Sequence1, Sequence1&>::type seq1; typename mpl::if_<traits::is_view<Sequence2>, Sequence2, Sequence2&>::type seq2; - - // silence MSVC warning C4512: assignment operator could not be generated - BOOST_DELETED_FUNCTION(transform_view& operator= (transform_view const&)) }; // Unary Version @@ -111,12 +113,13 @@ namespace boost { namespace fusion last_type last() const { return fusion::end(seq); } typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq; transform_type f; - - // silence MSVC warning C4512: assignment operator could not be generated - BOOST_DELETED_FUNCTION(transform_view& operator= (transform_view const&)) }; }} +#ifdef _MSC_VER +# pragma warning(pop) +#endif + #endif diff --git a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/transform_view_iterator.hpp b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/transform_view_iterator.hpp index 2689ae8aab..ba5b7c9b11 100644 --- a/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/transform_view_iterator.hpp +++ b/contrib/restricted/boost/fusion/include/boost/fusion/view/transform_view/transform_view_iterator.hpp @@ -19,6 +19,14 @@ #include <boost/fusion/view/transform_view/detail/advance_impl.hpp> #include <boost/fusion/view/transform_view/detail/distance_impl.hpp> #include <boost/fusion/view/transform_view/detail/equal_to_impl.hpp> +#include <boost/fusion/view/transform_view/detail/key_of_impl.hpp> +#include <boost/fusion/view/transform_view/detail/value_of_data_impl.hpp> +#include <boost/fusion/view/transform_view/detail/deref_data_impl.hpp> + +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4512) // assignment operator could not be generated. +#endif namespace boost { namespace fusion { @@ -41,9 +49,6 @@ namespace boost { namespace fusion first_type first; transform_type f; - - // silence MSVC warning C4512: assignment operator could not be generated - BOOST_DELETED_FUNCTION(transform_view_iterator& operator= (transform_view_iterator const&)) }; // Binary Version @@ -68,12 +73,13 @@ namespace boost { namespace fusion first1_type first1; first2_type first2; transform_type f; - - // silence MSVC warning C4512: assignment operator could not be generated - BOOST_DELETED_FUNCTION(transform_view_iterator2& operator= (transform_view_iterator2 const&)) }; }} +#ifdef _MSC_VER +# pragma warning(pop) +#endif + #ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408 namespace std { |