mirror of
https://git.suyu.dev/suyu/ext-boost.git
synced 2025-12-24 00:04:41 +01:00
Update boost to 1.68.0
Keeps the boost libraries up to date. This also silences informational messages that get spammed throughout the build, such as: "Info: Boost.Config is older than your compiler version - probably nothing bad will happen - but you may wish to look for an update Boost version. Define BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE to suppress this message." Which makes the compilation process a lot less noisy on Windows. It's now much easier to actually spot warnings that occur.
This commit is contained in:
parent
d80e506e17
commit
db95c7fe31
191 changed files with 10342 additions and 6193 deletions
|
|
@ -78,9 +78,9 @@ template <class Key, class T, class Compare, class Allocator, class Options>
|
|||
#endif
|
||||
class map
|
||||
///@cond
|
||||
: public container_detail::tree
|
||||
: public dtl::tree
|
||||
< std::pair<const Key, T>
|
||||
, container_detail::select1st<Key>
|
||||
, dtl::select1st<Key>
|
||||
, Compare, Allocator, Options>
|
||||
///@endcond
|
||||
{
|
||||
|
|
@ -88,11 +88,11 @@ class map
|
|||
private:
|
||||
BOOST_COPYABLE_AND_MOVABLE(map)
|
||||
|
||||
typedef container_detail::select1st<Key> select_1st_t;
|
||||
typedef dtl::select1st<Key> select_1st_t;
|
||||
typedef std::pair<const Key, T> value_type_impl;
|
||||
typedef container_detail::tree
|
||||
typedef dtl::tree
|
||||
<value_type_impl, select_1st_t, Compare, Allocator, Options> base_t;
|
||||
typedef container_detail::pair <Key, T> movable_value_type_impl;
|
||||
typedef dtl::pair <Key, T> movable_value_type_impl;
|
||||
typedef typename base_t::value_compare value_compare_impl;
|
||||
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
||||
|
||||
|
|
@ -131,7 +131,7 @@ class map
|
|||
(insert_return_type_base<iterator BOOST_MOVE_I node_type>) insert_return_type;
|
||||
|
||||
//allocator_type::value_type type must be std::pair<CONST Key, T>
|
||||
BOOST_STATIC_ASSERT((container_detail::is_same<typename allocator_type::value_type, std::pair<const Key, T> >::value));
|
||||
BOOST_STATIC_ASSERT((dtl::is_same<typename allocator_type::value_type, std::pair<const Key, T> >::value));
|
||||
|
||||
//////////////////////////////////////////////
|
||||
//
|
||||
|
|
@ -143,8 +143,8 @@ class map
|
|||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_CONTAINER_FORCEINLINE
|
||||
map() BOOST_NOEXCEPT_IF(container_detail::is_nothrow_default_constructible<Allocator>::value &&
|
||||
container_detail::is_nothrow_default_constructible<Compare>::value)
|
||||
map() BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<Allocator>::value &&
|
||||
dtl::is_nothrow_default_constructible<Compare>::value)
|
||||
: base_t()
|
||||
{}
|
||||
|
||||
|
|
@ -350,7 +350,7 @@ class map
|
|||
//!
|
||||
//! <b>Postcondition</b>: x is emptied.
|
||||
BOOST_CONTAINER_FORCEINLINE map(BOOST_RV_REF(map) x)
|
||||
BOOST_NOEXCEPT_IF(boost::container::container_detail::is_nothrow_move_constructible<Compare>::value)
|
||||
BOOST_NOEXCEPT_IF(boost::container::dtl::is_nothrow_move_constructible<Compare>::value)
|
||||
: base_t(BOOST_MOVE_BASE(base_t, x))
|
||||
{}
|
||||
|
||||
|
|
@ -388,7 +388,7 @@ class map
|
|||
BOOST_CONTAINER_FORCEINLINE map& operator=(BOOST_RV_REF(map) x)
|
||||
BOOST_NOEXCEPT_IF( (allocator_traits_type::propagate_on_container_move_assignment::value ||
|
||||
allocator_traits_type::is_always_equal::value) &&
|
||||
boost::container::container_detail::is_nothrow_move_assignable<Compare>::value)
|
||||
boost::container::dtl::is_nothrow_move_assignable<Compare>::value)
|
||||
{ return static_cast<map&>(this->base_t::operator=(BOOST_MOVE_BASE(base_t, x))); }
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
||||
|
|
@ -1014,7 +1014,7 @@ class map
|
|||
template<class C2>
|
||||
BOOST_CONTAINER_FORCEINLINE void merge(map<Key, T, C2, Allocator, Options>& source)
|
||||
{
|
||||
typedef container_detail::tree
|
||||
typedef dtl::tree
|
||||
<value_type_impl, select_1st_t, C2, Allocator, Options> base2_t;
|
||||
this->merge_unique(static_cast<base2_t&>(source));
|
||||
}
|
||||
|
|
@ -1028,7 +1028,7 @@ class map
|
|||
template<class C2>
|
||||
BOOST_CONTAINER_FORCEINLINE void merge(multimap<Key, T, C2, Allocator, Options>& source)
|
||||
{
|
||||
typedef container_detail::tree
|
||||
typedef dtl::tree
|
||||
<value_type_impl, select_1st_t, C2, Allocator, Options> base2_t;
|
||||
this->base_t::merge_unique(static_cast<base2_t&>(source));
|
||||
}
|
||||
|
|
@ -1046,7 +1046,7 @@ class map
|
|||
//! <b>Complexity</b>: Constant.
|
||||
void swap(map& x)
|
||||
BOOST_NOEXCEPT_IF( allocator_traits_type::is_always_equal::value
|
||||
&& boost::container::container_detail::is_nothrow_swappable<Compare>::value )
|
||||
&& boost::container::dtl::is_nothrow_swappable<Compare>::value )
|
||||
|
||||
//! <b>Effects</b>: erase(a.begin(),a.end()).
|
||||
//!
|
||||
|
|
@ -1079,6 +1079,26 @@ class map
|
|||
//! <b>Complexity</b>: Logarithmic.
|
||||
const_iterator find(const key_type& x) const;
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Returns</b>: An iterator pointing to an element with the key
|
||||
//! equivalent to x, or end() if such an element is not found.
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic.
|
||||
template<typename K>
|
||||
iterator find(const K& x);
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Returns</b>: A const_iterator pointing to an element with the key
|
||||
//! equivalent to x, or end() if such an element is not found.
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic.
|
||||
template<typename K>
|
||||
const_iterator find(const K& x) const;
|
||||
|
||||
#endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
||||
|
||||
//! <b>Returns</b>: The number of elements with key equivalent to x.
|
||||
|
|
@ -1087,6 +1107,16 @@ class map
|
|||
BOOST_CONTAINER_FORCEINLINE size_type count(const key_type& x) const
|
||||
{ return static_cast<size_type>(this->find(x) != this->cend()); }
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Returns</b>: The number of elements with key equivalent to x.
|
||||
//!
|
||||
//! <b>Complexity</b>: log(size())+count(k)
|
||||
template<typename K>
|
||||
BOOST_CONTAINER_FORCEINLINE size_type count(const K& x) const
|
||||
{ return static_cast<size_type>(this->find(x) != this->cend()); }
|
||||
|
||||
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
||||
|
||||
//! <b>Returns</b>: An iterator pointing to the first element with key not less
|
||||
|
|
@ -1101,6 +1131,26 @@ class map
|
|||
//! <b>Complexity</b>: Logarithmic
|
||||
const_iterator lower_bound(const key_type& x) const;
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Returns</b>: An iterator pointing to the first element with key not less
|
||||
//! than k, or a.end() if such an element is not found.
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic
|
||||
template<typename K>
|
||||
iterator lower_bound(const K& x);
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Returns</b>: A const iterator pointing to the first element with key not
|
||||
//! less than k, or a.end() if such an element is not found.
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic
|
||||
template<typename K>
|
||||
const_iterator lower_bound(const K& x) const;
|
||||
|
||||
//! <b>Returns</b>: An iterator pointing to the first element with key not less
|
||||
//! than x, or end() if such an element is not found.
|
||||
//!
|
||||
|
|
@ -1113,6 +1163,26 @@ class map
|
|||
//! <b>Complexity</b>: Logarithmic
|
||||
const_iterator upper_bound(const key_type& x) const;
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Returns</b>: An iterator pointing to the first element with key not less
|
||||
//! than x, or end() if such an element is not found.
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic
|
||||
template<typename K>
|
||||
iterator upper_bound(const K& x);
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Returns</b>: A const iterator pointing to the first element with key not
|
||||
//! less than x, or end() if such an element is not found.
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic
|
||||
template<typename K>
|
||||
const_iterator upper_bound(const K& x) const;
|
||||
|
||||
//! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic
|
||||
|
|
@ -1123,6 +1193,24 @@ class map
|
|||
//! <b>Complexity</b>: Logarithmic
|
||||
std::pair<const_iterator,const_iterator> equal_range(const key_type& x) const;
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic
|
||||
template<typename K>
|
||||
std::pair<iterator,iterator> equal_range(const K& x);
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic
|
||||
template<typename K>
|
||||
std::pair<const_iterator,const_iterator> equal_range(const K& x) const;
|
||||
|
||||
//! <b>Effects</b>: Rebalances the tree. It's a no-op for Red-Black and AVL trees.
|
||||
//!
|
||||
//! <b>Complexity</b>: Linear
|
||||
|
|
@ -1175,6 +1263,60 @@ class map
|
|||
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
||||
};
|
||||
|
||||
#if __cplusplus >= 201703L
|
||||
|
||||
template <typename InputIterator>
|
||||
map(InputIterator, InputIterator) ->
|
||||
map< typename dtl::remove_const< typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type>;
|
||||
|
||||
template <typename InputIterator, typename Allocator>
|
||||
map(InputIterator, InputIterator, Allocator const&) ->
|
||||
map< typename dtl::remove_const< typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type
|
||||
, std::less<typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type>
|
||||
, Allocator>;
|
||||
|
||||
template <typename InputIterator, typename Compare>
|
||||
map(InputIterator, InputIterator, Compare const&) ->
|
||||
map< typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type
|
||||
, Compare>;
|
||||
|
||||
template <typename InputIterator, typename Compare, typename Allocator>
|
||||
map(InputIterator, InputIterator, Compare const&, Allocator const&) ->
|
||||
map< typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type
|
||||
, Compare
|
||||
, Allocator>;
|
||||
|
||||
template <typename InputIterator>
|
||||
map(ordered_unique_range_t, InputIterator, InputIterator) ->
|
||||
map< typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type>;
|
||||
|
||||
template <typename InputIterator, typename Allocator>
|
||||
map(ordered_unique_range_t, InputIterator, InputIterator, Allocator const&) ->
|
||||
map< typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type
|
||||
, std::less<typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type>
|
||||
, Allocator>;
|
||||
|
||||
template <typename InputIterator, typename Compare>
|
||||
map(ordered_unique_range_t, InputIterator, InputIterator, Compare const&) ->
|
||||
map< typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type
|
||||
, Compare>;
|
||||
|
||||
template <typename InputIterator, typename Compare, typename Allocator>
|
||||
map(ordered_unique_range_t, InputIterator, InputIterator, Compare const&, Allocator const&) ->
|
||||
map< typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type
|
||||
, Compare
|
||||
, Allocator>;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
||||
|
||||
|
|
@ -1219,9 +1361,9 @@ template <class Key, class T, class Compare, class Allocator, class Options>
|
|||
#endif
|
||||
class multimap
|
||||
///@cond
|
||||
: public container_detail::tree
|
||||
: public dtl::tree
|
||||
< std::pair<const Key, T>
|
||||
, container_detail::select1st<Key>
|
||||
, dtl::select1st<Key>
|
||||
, Compare, Allocator, Options>
|
||||
///@endcond
|
||||
{
|
||||
|
|
@ -1229,11 +1371,11 @@ class multimap
|
|||
private:
|
||||
BOOST_COPYABLE_AND_MOVABLE(multimap)
|
||||
|
||||
typedef container_detail::select1st<Key> select_1st_t;
|
||||
typedef dtl::select1st<Key> select_1st_t;
|
||||
typedef std::pair<const Key, T> value_type_impl;
|
||||
typedef container_detail::tree
|
||||
typedef dtl::tree
|
||||
<value_type_impl, select_1st_t, Compare, Allocator, Options> base_t;
|
||||
typedef container_detail::pair <Key, T> movable_value_type_impl;
|
||||
typedef dtl::pair <Key, T> movable_value_type_impl;
|
||||
typedef typename base_t::value_compare value_compare_impl;
|
||||
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
||||
|
||||
|
|
@ -1271,7 +1413,7 @@ class multimap
|
|||
<key_type BOOST_MOVE_I mapped_type> >) node_type;
|
||||
|
||||
//allocator_type::value_type type must be std::pair<CONST Key, T>
|
||||
BOOST_STATIC_ASSERT((container_detail::is_same<typename allocator_type::value_type, std::pair<const Key, T> >::value));
|
||||
BOOST_STATIC_ASSERT((dtl::is_same<typename allocator_type::value_type, std::pair<const Key, T> >::value));
|
||||
|
||||
//////////////////////////////////////////////
|
||||
//
|
||||
|
|
@ -1283,8 +1425,8 @@ class multimap
|
|||
//!
|
||||
//! <b>Complexity</b>: Constant.
|
||||
BOOST_CONTAINER_FORCEINLINE multimap()
|
||||
BOOST_NOEXCEPT_IF(container_detail::is_nothrow_default_constructible<Allocator>::value &&
|
||||
container_detail::is_nothrow_default_constructible<Compare>::value)
|
||||
BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<Allocator>::value &&
|
||||
dtl::is_nothrow_default_constructible<Compare>::value)
|
||||
: base_t()
|
||||
{}
|
||||
|
||||
|
|
@ -1486,7 +1628,7 @@ class multimap
|
|||
//!
|
||||
//! <b>Postcondition</b>: x is emptied.
|
||||
BOOST_CONTAINER_FORCEINLINE multimap(BOOST_RV_REF(multimap) x)
|
||||
BOOST_NOEXCEPT_IF(boost::container::container_detail::is_nothrow_move_constructible<Compare>::value)
|
||||
BOOST_NOEXCEPT_IF(boost::container::dtl::is_nothrow_move_constructible<Compare>::value)
|
||||
: base_t(BOOST_MOVE_BASE(base_t, x))
|
||||
{}
|
||||
|
||||
|
|
@ -1518,7 +1660,7 @@ class multimap
|
|||
BOOST_CONTAINER_FORCEINLINE multimap& operator=(BOOST_RV_REF(multimap) x)
|
||||
BOOST_NOEXCEPT_IF( (allocator_traits_type::propagate_on_container_move_assignment::value ||
|
||||
allocator_traits_type::is_always_equal::value) &&
|
||||
boost::container::container_detail::is_nothrow_move_assignable<Compare>::value)
|
||||
boost::container::dtl::is_nothrow_move_assignable<Compare>::value)
|
||||
{ return static_cast<multimap&>(this->base_t::operator=(BOOST_MOVE_BASE(base_t, x))); }
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
||||
|
|
@ -1790,7 +1932,7 @@ class multimap
|
|||
template<class C2>
|
||||
BOOST_CONTAINER_FORCEINLINE void merge(multimap<Key, T, C2, Allocator, Options>& source)
|
||||
{
|
||||
typedef container_detail::tree
|
||||
typedef dtl::tree
|
||||
<value_type_impl, select_1st_t, C2, Allocator, Options> base2_t;
|
||||
this->base_t::merge_equal(static_cast<base2_t&>(source));
|
||||
}
|
||||
|
|
@ -1804,7 +1946,7 @@ class multimap
|
|||
template<class C2>
|
||||
BOOST_CONTAINER_FORCEINLINE void merge(map<Key, T, C2, Allocator, Options>& source)
|
||||
{
|
||||
typedef container_detail::tree
|
||||
typedef dtl::tree
|
||||
<value_type_impl, select_1st_t, C2, Allocator, Options> base2_t;
|
||||
this->base_t::merge_equal(static_cast<base2_t&>(source));
|
||||
}
|
||||
|
|
@ -1818,7 +1960,7 @@ class multimap
|
|||
//! @copydoc ::boost::container::set::swap
|
||||
void swap(multiset& x)
|
||||
BOOST_NOEXCEPT_IF( allocator_traits_type::is_always_equal::value
|
||||
&& boost::container::container_detail::is_nothrow_swappable<Compare>::value );
|
||||
&& boost::container::dtl::is_nothrow_swappable<Compare>::value );
|
||||
|
||||
//! @copydoc ::boost::container::set::clear
|
||||
void clear() BOOST_NOEXCEPT_OR_NOTHROW;
|
||||
|
|
@ -1841,11 +1983,40 @@ class multimap
|
|||
//! <b>Complexity</b>: Logarithmic.
|
||||
const_iterator find(const key_type& x) const;
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Returns</b>: An iterator pointing to an element with the key
|
||||
//! equivalent to x, or end() if such an element is not found.
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic.
|
||||
template<typename K>
|
||||
iterator find(const K& x);
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Returns</b>: A const_iterator pointing to an element with the key
|
||||
//! equivalent to x, or end() if such an element is not found.
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic.
|
||||
template<typename K>
|
||||
const_iterator find(const K& x) const;
|
||||
|
||||
//! <b>Returns</b>: The number of elements with key equivalent to x.
|
||||
//!
|
||||
//! <b>Complexity</b>: log(size())+count(k)
|
||||
size_type count(const key_type& x) const;
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Returns</b>: The number of elements with key equivalent to x.
|
||||
//!
|
||||
//! <b>Complexity</b>: log(size())+count(k)
|
||||
template<typename K>
|
||||
size_type count(const K& x) const;
|
||||
|
||||
//! <b>Returns</b>: An iterator pointing to the first element with key not less
|
||||
//! than k, or a.end() if such an element is not found.
|
||||
//!
|
||||
|
|
@ -1858,6 +2029,26 @@ class multimap
|
|||
//! <b>Complexity</b>: Logarithmic
|
||||
const_iterator lower_bound(const key_type& x) const;
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Returns</b>: An iterator pointing to the first element with key not less
|
||||
//! than k, or a.end() if such an element is not found.
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic
|
||||
template<typename K>
|
||||
iterator lower_bound(const K& x);
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Returns</b>: A const iterator pointing to the first element with key not
|
||||
//! less than k, or a.end() if such an element is not found.
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic
|
||||
template<typename K>
|
||||
const_iterator lower_bound(const K& x) const;
|
||||
|
||||
//! <b>Returns</b>: An iterator pointing to the first element with key not less
|
||||
//! than x, or end() if such an element is not found.
|
||||
//!
|
||||
|
|
@ -1870,6 +2061,26 @@ class multimap
|
|||
//! <b>Complexity</b>: Logarithmic
|
||||
const_iterator upper_bound(const key_type& x) const;
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Returns</b>: An iterator pointing to the first element with key not less
|
||||
//! than x, or end() if such an element is not found.
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic
|
||||
template<typename K>
|
||||
iterator upper_bound(const K& x);
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Returns</b>: A const iterator pointing to the first element with key not
|
||||
//! less than x, or end() if such an element is not found.
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic
|
||||
template<typename K>
|
||||
const_iterator upper_bound(const K& x) const;
|
||||
|
||||
//! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic
|
||||
|
|
@ -1880,6 +2091,24 @@ class multimap
|
|||
//! <b>Complexity</b>: Logarithmic
|
||||
std::pair<const_iterator,const_iterator> equal_range(const key_type& x) const;
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic
|
||||
template<typename K>
|
||||
std::pair<iterator,iterator> equal_range(const K& x);
|
||||
|
||||
//! <b>Requires</b>: This overload is available only if
|
||||
//! key_compare::is_transparent exists.
|
||||
//!
|
||||
//! <b>Effects</b>: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)).
|
||||
//!
|
||||
//! <b>Complexity</b>: Logarithmic
|
||||
template<typename K>
|
||||
std::pair<const_iterator,const_iterator> equal_range(const K& x) const;
|
||||
|
||||
//! <b>Effects</b>: Rebalances the tree. It's a no-op for Red-Black and AVL trees.
|
||||
//!
|
||||
//! <b>Complexity</b>: Linear
|
||||
|
|
@ -1923,6 +2152,60 @@ class multimap
|
|||
#endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
||||
};
|
||||
|
||||
#if __cplusplus >= 201703L
|
||||
|
||||
template <typename InputIterator>
|
||||
multimap(InputIterator, InputIterator) ->
|
||||
multimap<typename dtl::remove_const< typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type>;
|
||||
|
||||
template <typename InputIterator, typename Allocator>
|
||||
multimap(InputIterator, InputIterator, Allocator const&) ->
|
||||
multimap<typename dtl::remove_const< typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type
|
||||
, std::less<typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type>
|
||||
, Allocator>;
|
||||
|
||||
template <typename InputIterator, typename Compare>
|
||||
multimap(InputIterator, InputIterator, Compare const&) ->
|
||||
multimap< typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type
|
||||
, Compare>;
|
||||
|
||||
template <typename InputIterator, typename Compare, typename Allocator>
|
||||
multimap(InputIterator, InputIterator, Compare const&, Allocator const&) ->
|
||||
multimap< typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type
|
||||
, Compare
|
||||
, Allocator>;
|
||||
|
||||
template <typename InputIterator>
|
||||
multimap(ordered_range_t, InputIterator, InputIterator) ->
|
||||
multimap< typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type>;
|
||||
|
||||
template <typename InputIterator, typename Allocator>
|
||||
multimap(ordered_range_t, InputIterator, InputIterator, Allocator const&) ->
|
||||
multimap< typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type
|
||||
, std::less<typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type>
|
||||
, Allocator>;
|
||||
|
||||
template <typename InputIterator, typename Compare>
|
||||
multimap(ordered_range_t, InputIterator, InputIterator, Compare const&) ->
|
||||
multimap< typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type
|
||||
, Compare>;
|
||||
|
||||
template <typename InputIterator, typename Compare, typename Allocator>
|
||||
multimap(ordered_range_t, InputIterator, InputIterator, Compare const&, Allocator const&) ->
|
||||
multimap< typename dtl::remove_const<typename iterator_traits<InputIterator>::value_type::first_type>::type
|
||||
, typename iterator_traits<InputIterator>::value_type::second_type
|
||||
, Compare
|
||||
, Allocator>;
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
||||
|
||||
} //namespace container {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue