aboutsummaryrefslogtreecommitdiff
path: root/libcxx/include/map
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/include/map')
-rw-r--r--libcxx/include/map50
1 files changed, 34 insertions, 16 deletions
diff --git a/libcxx/include/map b/libcxx/include/map
index 035f913..3ff849a 100644
--- a/libcxx/include/map
+++ b/libcxx/include/map
@@ -1300,38 +1300,48 @@ public:
}
# endif // _LIBCPP_STD_VER >= 20
- _LIBCPP_HIDE_FROM_ABI iterator lower_bound(const key_type& __k) { return __tree_.lower_bound(__k); }
- _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const key_type& __k) const { return __tree_.lower_bound(__k); }
+ _LIBCPP_HIDE_FROM_ABI iterator lower_bound(const key_type& __k) { return __tree_.__lower_bound_unique(__k); }
+
+ _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const key_type& __k) const {
+ return __tree_.__lower_bound_unique(__k);
+ }
+
+ // The transparent versions of the lookup functions use the _multi version, since a non-element key is allowed to
+ // match multiple elements.
# if _LIBCPP_STD_VER >= 14
template <typename _K2,
enable_if_t<__is_transparent_v<_Compare, _K2> || __is_transparently_comparable_v<_Compare, key_type, _K2>,
int> = 0>
_LIBCPP_HIDE_FROM_ABI iterator lower_bound(const _K2& __k) {
- return __tree_.lower_bound(__k);
+ return __tree_.__lower_bound_multi(__k);
}
template <typename _K2,
enable_if_t<__is_transparent_v<_Compare, _K2> || __is_transparently_comparable_v<_Compare, key_type, _K2>,
int> = 0>
_LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const _K2& __k) const {
- return __tree_.lower_bound(__k);
+ return __tree_.__lower_bound_multi(__k);
}
# endif
- _LIBCPP_HIDE_FROM_ABI iterator upper_bound(const key_type& __k) { return __tree_.upper_bound(__k); }
- _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const key_type& __k) const { return __tree_.upper_bound(__k); }
+ _LIBCPP_HIDE_FROM_ABI iterator upper_bound(const key_type& __k) { return __tree_.__upper_bound_unique(__k); }
+
+ _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const key_type& __k) const {
+ return __tree_.__upper_bound_unique(__k);
+ }
+
# if _LIBCPP_STD_VER >= 14
template <typename _K2,
enable_if_t<__is_transparent_v<_Compare, _K2> || __is_transparently_comparable_v<_Compare, key_type, _K2>,
int> = 0>
_LIBCPP_HIDE_FROM_ABI iterator upper_bound(const _K2& __k) {
- return __tree_.upper_bound(__k);
+ return __tree_.__upper_bound_multi(__k);
}
template <typename _K2,
enable_if_t<__is_transparent_v<_Compare, _K2> || __is_transparently_comparable_v<_Compare, key_type, _K2>,
int> = 0>
_LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const _K2& __k) const {
- return __tree_.upper_bound(__k);
+ return __tree_.__upper_bound_multi(__k);
}
# endif
@@ -1871,30 +1881,38 @@ public:
}
# endif // _LIBCPP_STD_VER >= 20
- _LIBCPP_HIDE_FROM_ABI iterator lower_bound(const key_type& __k) { return __tree_.lower_bound(__k); }
- _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const key_type& __k) const { return __tree_.lower_bound(__k); }
+ _LIBCPP_HIDE_FROM_ABI iterator lower_bound(const key_type& __k) { return __tree_.__lower_bound_multi(__k); }
+
+ _LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const key_type& __k) const {
+ return __tree_.__lower_bound_multi(__k);
+ }
+
# if _LIBCPP_STD_VER >= 14
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
_LIBCPP_HIDE_FROM_ABI iterator lower_bound(const _K2& __k) {
- return __tree_.lower_bound(__k);
+ return __tree_.__lower_bound_multi(__k);
}
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
_LIBCPP_HIDE_FROM_ABI const_iterator lower_bound(const _K2& __k) const {
- return __tree_.lower_bound(__k);
+ return __tree_.__lower_bound_multi(__k);
}
# endif
- _LIBCPP_HIDE_FROM_ABI iterator upper_bound(const key_type& __k) { return __tree_.upper_bound(__k); }
- _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const key_type& __k) const { return __tree_.upper_bound(__k); }
+ _LIBCPP_HIDE_FROM_ABI iterator upper_bound(const key_type& __k) { return __tree_.__upper_bound_multi(__k); }
+
+ _LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const key_type& __k) const {
+ return __tree_.__upper_bound_multi(__k);
+ }
+
# if _LIBCPP_STD_VER >= 14
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
_LIBCPP_HIDE_FROM_ABI iterator upper_bound(const _K2& __k) {
- return __tree_.upper_bound(__k);
+ return __tree_.__upper_bound_multi(__k);
}
template <typename _K2, enable_if_t<__is_transparent_v<_Compare, _K2>, int> = 0>
_LIBCPP_HIDE_FROM_ABI const_iterator upper_bound(const _K2& __k) const {
- return __tree_.upper_bound(__k);
+ return __tree_.__upper_bound_multi(__k);
}
# endif