aboutsummaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorrobot-contrib <robot-contrib@yandex-team.com>2024-12-17 07:25:55 +0300
committerrobot-contrib <robot-contrib@yandex-team.com>2024-12-17 07:57:21 +0300
commitd83454f8c0a247dd9e8004e7e7171c09d33ef7df (patch)
treee7a9e4b0f00048038c2f4897777ca4ebd3d106e0 /contrib
parentea02bc3d382abec44b915e46fc1180d422ec6a7b (diff)
downloadydb-d83454f8c0a247dd9e8004e7e7171c09d33ef7df.tar.gz
Update contrib/restricted/boost/intrusive to 1.87.0
commit_hash:f66707378fbe480791e0d0f5e85c78547174323f
Diffstat (limited to 'contrib')
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/avl_set.hpp8
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/avltree.hpp4
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/bs_set.hpp8
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/bstree.hpp16
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/detail/function_detector.hpp2
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/detail/parent_from_member.hpp9
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/detail/workaround.hpp10
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/list.hpp5
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/rbtree.hpp4
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/set.hpp8
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/sg_set.hpp8
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/sgtree.hpp4
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/slist.hpp5
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/splay_set.hpp8
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/splaytree.hpp4
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/treap.hpp4
-rw-r--r--contrib/restricted/boost/intrusive/include/boost/intrusive/treap_set.hpp8
-rw-r--r--contrib/restricted/boost/intrusive/ya.make4
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