diff options
author | robot-contrib <robot-contrib@yandex-team.com> | 2024-12-17 07:25:55 +0300 |
---|---|---|
committer | robot-contrib <robot-contrib@yandex-team.com> | 2024-12-17 07:57:21 +0300 |
commit | d83454f8c0a247dd9e8004e7e7171c09d33ef7df (patch) | |
tree | e7a9e4b0f00048038c2f4897777ca4ebd3d106e0 /contrib | |
parent | ea02bc3d382abec44b915e46fc1180d422ec6a7b (diff) | |
download | ydb-d83454f8c0a247dd9e8004e7e7171c09d33ef7df.tar.gz |
Update contrib/restricted/boost/intrusive to 1.87.0
commit_hash:f66707378fbe480791e0d0f5e85c78547174323f
Diffstat (limited to 'contrib')
18 files changed, 108 insertions, 11 deletions
diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/avl_set.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/avl_set.hpp index 2d76ece7b9..5c0f8aa24e 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/avl_set.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/avl_set.hpp @@ -554,15 +554,19 @@ class avl_set inline void clone_from(BOOST_RV_REF(avl_set) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static avl_set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<avl_set &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const avl_set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const avl_set &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static avl_set &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<avl_set &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const avl_set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const avl_set &>(Base::container_from_iterator(it)); } }; @@ -1049,15 +1053,19 @@ class avl_multiset inline void clone_from(BOOST_RV_REF(avl_multiset) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static avl_multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<avl_multiset &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const avl_multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const avl_multiset &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static avl_multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<avl_multiset &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const avl_multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const avl_multiset &>(Base::container_from_iterator(it)); } }; diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/avltree.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/avltree.hpp index 4eda39e699..09cdb52502 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/avltree.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/avltree.hpp @@ -564,15 +564,19 @@ class avltree inline void clone_from(BOOST_RV_REF(avltree) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static avltree &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<avltree &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const avltree &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const avltree &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static avltree &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<avltree &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const avltree &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const avltree &>(Base::container_from_iterator(it)); } }; diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/bs_set.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/bs_set.hpp index c3275ddfda..bb06d24a27 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/bs_set.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/bs_set.hpp @@ -551,15 +551,19 @@ class bs_set inline void clone_from(BOOST_RV_REF(bs_set) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static bs_set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<bs_set &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const bs_set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const bs_set &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static bs_set &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<bs_set &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const bs_set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const bs_set &>(Base::container_from_iterator(it)); } }; @@ -1045,15 +1049,19 @@ class bs_multiset inline void clone_from(BOOST_RV_REF(bs_multiset) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static bs_multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<bs_multiset &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const bs_multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const bs_multiset &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static bs_multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<bs_multiset &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const bs_multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const bs_multiset &>(Base::container_from_iterator(it)); } }; diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/bstree.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/bstree.hpp index 8196d36b3f..6877bee230 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/bstree.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/bstree.hpp @@ -876,7 +876,8 @@ class bstree_impl //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - static bstree_impl &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT + BOOST_INTRUSIVE_NO_DANGLING + static bstree_impl& container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<bstree_impl&> (data_type::get_tree_base_from_end_iterator(end_iterator)); @@ -890,7 +891,8 @@ class bstree_impl //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. - static const bstree_impl &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT + BOOST_INTRUSIVE_NO_DANGLING + static const bstree_impl & container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<bstree_impl&> (data_type::get_tree_base_from_end_iterator(end_iterator)); @@ -904,7 +906,8 @@ class bstree_impl //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Logarithmic. - static bstree_impl &container_from_iterator(iterator it) BOOST_NOEXCEPT + BOOST_INTRUSIVE_NO_DANGLING + static bstree_impl & container_from_iterator(iterator it) BOOST_NOEXCEPT { return container_from_end_iterator(it.end_iterator_from_it()); } //! <b>Precondition</b>: it must be a valid end const_iterator @@ -915,7 +918,8 @@ class bstree_impl //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Logarithmic. - static const bstree_impl &container_from_iterator(const_iterator it) BOOST_NOEXCEPT + BOOST_INTRUSIVE_NO_DANGLING + static const bstree_impl & container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return container_from_end_iterator(it.end_iterator_from_it()); } #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED @@ -2215,15 +2219,19 @@ class bstree inline void clone_from(BOOST_RV_REF(bstree) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static bstree &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<bstree &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const bstree &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const bstree &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static bstree &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<bstree &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const bstree &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const bstree &>(Base::container_from_iterator(it)); } }; diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/detail/function_detector.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/detail/function_detector.hpp index 5ecaeaf073..b5e72ba221 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/detail/function_detector.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/detail/function_detector.hpp @@ -78,7 +78,7 @@ namespace function_detector { template <class U> \ static NotFoundType Test( ... ); \ public : \ - static const int check = NotFound + (sizeof(Test<T>(0, 0)) - sizeof(NotFoundType));\ + static const int check = NotFound + int(sizeof(Test<T>(0, 0)) - sizeof(NotFoundType));\ };\ }}} //namespace boost::intrusive::function_detector { diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/detail/parent_from_member.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/detail/parent_from_member.hpp index 8f1156e354..b276348dbe 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/detail/parent_from_member.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/detail/parent_from_member.hpp @@ -22,6 +22,7 @@ #include <boost/intrusive/detail/config_begin.hpp> #include <boost/intrusive/detail/workaround.hpp> +#include <boost/move/detail/launder.hpp> #include <cstddef> #if defined(_MSC_VER) @@ -90,15 +91,15 @@ BOOST_INTRUSIVE_FORCEINLINE std::ptrdiff_t offset_from_pointer_to_member(const M template<class Parent, class Member> BOOST_INTRUSIVE_FORCEINLINE Parent *parent_from_member(Member *member, const Member Parent::* ptr_to_member) { - return reinterpret_cast<Parent*> - (reinterpret_cast<std::size_t>(member) - static_cast<std::size_t>(offset_from_pointer_to_member(ptr_to_member))); + return boost::move_detail::launder(reinterpret_cast<Parent*> + (reinterpret_cast<std::size_t>(member) - static_cast<std::size_t>(offset_from_pointer_to_member(ptr_to_member)))); } template<class Parent, class Member> BOOST_INTRUSIVE_FORCEINLINE const Parent *parent_from_member(const Member *member, const Member Parent::* ptr_to_member) { - return reinterpret_cast<const Parent*> - ( reinterpret_cast<std::size_t>(member) - static_cast<std::size_t>(offset_from_pointer_to_member(ptr_to_member)) ); + return boost::move_detail::launder(reinterpret_cast<const Parent*> + ( reinterpret_cast<std::size_t>(member) - static_cast<std::size_t>(offset_from_pointer_to_member(ptr_to_member)) )); } } //namespace detail { diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/detail/workaround.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/detail/workaround.hpp index f925a87a8b..f797b10f75 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/detail/workaround.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/detail/workaround.hpp @@ -110,6 +110,16 @@ template<unsigned> struct static_assert_test {}; (unsigned)sizeof(::boost::intrusive::detail::STATIC_ASSERTION_FAILURE<bool(B)>)>\ BOOST_JOIN(boost_intrusive_static_assert_typedef_, __LINE__) BOOST_ATTRIBUTE_UNUSED +#endif //BOOST_NO_CXX11_STATIC_ASSERT + + +//GCC has some false positives with some functions returning references. +//This silences this warning in selected functions +#if defined(BOOST_GCC) && (BOOST_GCC >= 140000) +# define BOOST_INTRUSIVE_NO_DANGLING __attribute__((no_dangling)) +#else +# define BOOST_INTRUSIVE_NO_DANGLING #endif + #endif //#ifndef BOOST_INTRUSIVE_DETAIL_WORKAROUND_HPP diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/list.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/list.hpp index 9871d97394..507e73c631 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/list.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/list.hpp @@ -500,6 +500,7 @@ class list_impl //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. + BOOST_INTRUSIVE_NO_DANGLING inline static list_impl &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return list_impl::priv_container_from_end_iterator(end_iterator); } @@ -511,6 +512,7 @@ class list_impl //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. + BOOST_INTRUSIVE_NO_DANGLING inline static const list_impl &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return list_impl::priv_container_from_end_iterator(end_iterator); } @@ -1391,6 +1393,7 @@ class list_impl /// @cond private: + BOOST_INTRUSIVE_NO_DANGLING static list_impl &priv_container_from_end_iterator(const const_iterator &end_iterator) BOOST_NOEXCEPT { BOOST_INTRUSIVE_STATIC_ASSERT((has_container_from_iterator)); @@ -1501,9 +1504,11 @@ class list inline void clone_from(BOOST_RV_REF(list) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static list &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<list &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const list &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const list &>(Base::container_from_end_iterator(end_iterator)); } }; diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/rbtree.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/rbtree.hpp index 04fce1eecf..4ca437fe4c 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/rbtree.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/rbtree.hpp @@ -567,15 +567,19 @@ class rbtree inline void clone_from(BOOST_RV_REF(rbtree) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static rbtree &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<rbtree &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const rbtree &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const rbtree &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static rbtree &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<rbtree &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const rbtree &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const rbtree &>(Base::container_from_iterator(it)); } }; diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/set.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/set.hpp index 2a5859c0ee..91d54c4c48 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/set.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/set.hpp @@ -554,15 +554,19 @@ class set inline void clone_from(BOOST_RV_REF(set) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<set &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const set &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static set &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<set &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const set &>(Base::container_from_iterator(it)); } }; @@ -1049,15 +1053,19 @@ class multiset inline void clone_from(BOOST_RV_REF(multiset) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<multiset &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const multiset &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<multiset &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const multiset &>(Base::container_from_iterator(it)); } }; diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/sg_set.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/sg_set.hpp index ed0af55654..01cac5f583 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/sg_set.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/sg_set.hpp @@ -563,15 +563,19 @@ class sg_set inline void clone_from(BOOST_RV_REF(sg_set) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static sg_set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<sg_set &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const sg_set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const sg_set &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static sg_set &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<sg_set &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const sg_set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const sg_set &>(Base::container_from_iterator(it)); } }; @@ -1070,15 +1074,19 @@ class sg_multiset inline void clone_from(BOOST_RV_REF(sg_multiset) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static sg_multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<sg_multiset &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const sg_multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const sg_multiset &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static sg_multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<sg_multiset &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const sg_multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const sg_multiset &>(Base::container_from_iterator(it)); } }; diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/sgtree.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/sgtree.hpp index aaee1651c1..fa4d914eba 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/sgtree.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/sgtree.hpp @@ -1049,15 +1049,19 @@ class sgtree inline void clone_from(BOOST_RV_REF(sgtree) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static sgtree &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<sgtree &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const sgtree &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const sgtree &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static sgtree &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<sgtree &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const sgtree &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const sgtree &>(Base::container_from_iterator(it)); } }; diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/slist.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/slist.hpp index f39e7dfc2c..ac42cb48ac 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/slist.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/slist.hpp @@ -660,6 +660,7 @@ class slist_impl //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. + BOOST_INTRUSIVE_NO_DANGLING inline static slist_impl &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return slist_impl::priv_container_from_end_iterator(end_iterator); } @@ -671,6 +672,7 @@ class slist_impl //! <b>Throws</b>: Nothing. //! //! <b>Complexity</b>: Constant. + BOOST_INTRUSIVE_NO_DANGLING inline static const slist_impl &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return slist_impl::priv_container_from_end_iterator(end_iterator); } @@ -2107,6 +2109,7 @@ class slist_impl static void priv_swap_lists(node_ptr this_node, node_ptr other_node, detail::bool_<true>) { node_algorithms::swap_trailing_nodes(this_node, other_node); } + BOOST_INTRUSIVE_NO_DANGLING static slist_impl &priv_container_from_end_iterator(const const_iterator &end_iterator) { //Obtaining the container from the end iterator is not possible with linear @@ -2229,9 +2232,11 @@ class slist inline void clone_from(BOOST_RV_REF(slist) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static slist &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<slist &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const slist &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const slist &>(Base::container_from_end_iterator(end_iterator)); } }; diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/splay_set.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/splay_set.hpp index f11424acf6..a3df8a3eba 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/splay_set.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/splay_set.hpp @@ -575,15 +575,19 @@ class splay_set inline void clone_from(BOOST_RV_REF(splay_set) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static splay_set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<splay_set &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const splay_set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const splay_set &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static splay_set &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<splay_set &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const splay_set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const splay_set &>(Base::container_from_iterator(it)); } }; @@ -1086,15 +1090,19 @@ class splay_multiset inline void clone_from(BOOST_RV_REF(splay_multiset) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static splay_multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<splay_multiset &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const splay_multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const splay_multiset &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static splay_multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<splay_multiset &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const splay_multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const splay_multiset &>(Base::container_from_iterator(it)); } }; diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/splaytree.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/splaytree.hpp index e25647c6ab..919f70bde7 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/splaytree.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/splaytree.hpp @@ -642,15 +642,19 @@ class splaytree inline void clone_from(BOOST_RV_REF(splaytree) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static splaytree &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<splaytree &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const splaytree &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const splaytree &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static splaytree &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<splaytree &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const splaytree &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const splaytree &>(Base::container_from_iterator(it)); } }; diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/treap.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/treap.hpp index 4d8c9161f8..c39ccfeb99 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/treap.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/treap.hpp @@ -1347,15 +1347,19 @@ class treap inline void clone_from(BOOST_RV_REF(treap) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static treap &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<treap &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const treap &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const treap &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static treap &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<treap &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const treap &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const treap &>(Base::container_from_iterator(it)); } }; diff --git a/contrib/restricted/boost/intrusive/include/boost/intrusive/treap_set.hpp b/contrib/restricted/boost/intrusive/include/boost/intrusive/treap_set.hpp index f6a7a8fe07..a2f473780e 100644 --- a/contrib/restricted/boost/intrusive/include/boost/intrusive/treap_set.hpp +++ b/contrib/restricted/boost/intrusive/include/boost/intrusive/treap_set.hpp @@ -574,15 +574,19 @@ class treap_set inline void clone_from(BOOST_RV_REF(treap_set) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static treap_set &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<treap_set &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const treap_set &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const treap_set &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static treap_set &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<treap_set &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const treap_set &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const treap_set &>(Base::container_from_iterator(it)); } }; @@ -1089,15 +1093,19 @@ class treap_multiset inline void clone_from(BOOST_RV_REF(treap_multiset) src, Cloner cloner, Disposer disposer) { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); } + BOOST_INTRUSIVE_NO_DANGLING inline static treap_multiset &container_from_end_iterator(iterator end_iterator) BOOST_NOEXCEPT { return static_cast<treap_multiset &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const treap_multiset &container_from_end_iterator(const_iterator end_iterator) BOOST_NOEXCEPT { return static_cast<const treap_multiset &>(Base::container_from_end_iterator(end_iterator)); } + BOOST_INTRUSIVE_NO_DANGLING inline static treap_multiset &container_from_iterator(iterator it) BOOST_NOEXCEPT { return static_cast<treap_multiset &>(Base::container_from_iterator(it)); } + BOOST_INTRUSIVE_NO_DANGLING inline static const treap_multiset &container_from_iterator(const_iterator it) BOOST_NOEXCEPT { return static_cast<const treap_multiset &>(Base::container_from_iterator(it)); } }; diff --git a/contrib/restricted/boost/intrusive/ya.make b/contrib/restricted/boost/intrusive/ya.make index bf2202d4e9..c4277755b1 100644 --- a/contrib/restricted/boost/intrusive/ya.make +++ b/contrib/restricted/boost/intrusive/ya.make @@ -9,9 +9,9 @@ LICENSE( LICENSE_TEXTS(.yandex_meta/licenses.list.txt) -VERSION(1.86.0) +VERSION(1.87.0) -ORIGINAL_SOURCE(https://github.com/boostorg/intrusive/archive/boost-1.86.0.tar.gz) +ORIGINAL_SOURCE(https://github.com/boostorg/intrusive/archive/boost-1.87.0.tar.gz) PEERDIR( contrib/restricted/boost/assert |