aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/cxxsupp/libcxx/include/__iterator
diff options
context:
space:
mode:
authorhalyavin <halyavin@yandex-team.com>2023-09-26 11:14:38 +0300
committerhalyavin <halyavin@yandex-team.com>2023-09-26 11:42:52 +0300
commit7fcf8b470c7f4b97acf6f2833afa770c1372f231 (patch)
treec7583ae7054d92eb5788c03760b6b9c50f7cc6c6 /contrib/libs/cxxsupp/libcxx/include/__iterator
parent4c226ec97b09cd6fc38f8a0bbe57f52d384abe3f (diff)
downloadydb-7fcf8b470c7f4b97acf6f2833afa770c1372f231.tar.gz
Update libc++ to 9b03c08e (6 Mar 2022).
Notable changes: * don't warn that coroutines are not supported when using experimental/coroutine * add _LIBCPP_HIDE_FROM_ABI to __quoted_proxy constructors * ADL-proof calls of __quoted * fix ctype facet `is` method for Windows * change return type of bit_width to int (LWG3656) * make private __wrap_iter constructors explicit * fix delayed initialization of `__fill_` in basic_ios * ranges::iter_move cleanup * ADL-proof __synth_three_way * reject random number generators with signed types * use C++ overloads from math.h on AIX * add explicit to some internal constructors * replace _LIBCPP_HAS_NO_STRONG_ENUMS with C++ version check * use `inline constexpr bool` instead of `constexpr bool` for helpers in ranges * reject uniform_int_distribution<bool>, uniform_int_distribution<char> and all user types * allow std::mergeable and std::sortable even with incomplete ranges * fix double close bug in std::filesystem::remove_all * remove recursion in basic_string::insert because it interferes with constexpr * fix error checking of wctob_l calls * pack _Flags class on AIX * fix integer type in __estimate_column_width exposed by AIX * qualify all std::move calls with std * make chrono includes granular * set std::numeric_limits::tinyness_before to true on ARM * add ranges::in_found_result and ranges::min_max_result
Diffstat (limited to 'contrib/libs/cxxsupp/libcxx/include/__iterator')
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__iterator/common_iterator.h4
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__iterator/istreambuf_iterator.h3
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__iterator/iter_move.h38
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__iterator/iterator_traits.h2
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__iterator/mergeable.h4
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__iterator/sortable.h4
-rw-r--r--contrib/libs/cxxsupp/libcxx/include/__iterator/wrap_iter.h6
7 files changed, 26 insertions, 35 deletions
diff --git a/contrib/libs/cxxsupp/libcxx/include/__iterator/common_iterator.h b/contrib/libs/cxxsupp/libcxx/include/__iterator/common_iterator.h
index 505e4f1f3f..abbd8f4038 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__iterator/common_iterator.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__iterator/common_iterator.h
@@ -42,7 +42,7 @@ class common_iterator {
iter_value_t<_Iter> __value;
// We can move __x because the only caller verifies that __x is not a reference.
- constexpr __proxy(iter_reference_t<_Iter>&& __x)
+ constexpr explicit __proxy(iter_reference_t<_Iter>&& __x)
: __value(_VSTD::move(__x)) {}
public:
@@ -55,7 +55,7 @@ class common_iterator {
friend common_iterator;
iter_value_t<_Iter> __value;
- constexpr __postfix_proxy(iter_reference_t<_Iter>&& __x)
+ constexpr explicit __postfix_proxy(iter_reference_t<_Iter>&& __x)
: __value(_VSTD::forward<iter_reference_t<_Iter>>(__x)) {}
public:
diff --git a/contrib/libs/cxxsupp/libcxx/include/__iterator/istreambuf_iterator.h b/contrib/libs/cxxsupp/libcxx/include/__iterator/istreambuf_iterator.h
index 3b16f79476..bc53a6a1c8 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__iterator/istreambuf_iterator.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__iterator/istreambuf_iterator.h
@@ -50,7 +50,8 @@ private:
{
char_type __keep_;
streambuf_type* __sbuf_;
- _LIBCPP_INLINE_VISIBILITY __proxy(char_type __c, streambuf_type* __s)
+ _LIBCPP_INLINE_VISIBILITY
+ explicit __proxy(char_type __c, streambuf_type* __s)
: __keep_(__c), __sbuf_(__s) {}
friend class istreambuf_iterator;
public:
diff --git a/contrib/libs/cxxsupp/libcxx/include/__iterator/iter_move.h b/contrib/libs/cxxsupp/libcxx/include/__iterator/iter_move.h
index 4a89662927..97d54c4a82 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__iterator/iter_move.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__iterator/iter_move.h
@@ -10,11 +10,11 @@
#ifndef _LIBCPP___ITERATOR_ITER_MOVE_H
#define _LIBCPP___ITERATOR_ITER_MOVE_H
+#include <__concepts/class_or_enum.h>
#include <__config>
#include <__iterator/iterator_traits.h>
#include <__utility/forward.h>
#include <__utility/move.h>
-#include <concepts> // __class_or_enum
#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
@@ -36,44 +36,32 @@ template <class _Tp>
concept __unqualified_iter_move =
__class_or_enum<remove_cvref_t<_Tp>> &&
requires (_Tp&& __t) {
- iter_move(_VSTD::forward<_Tp>(__t));
+ iter_move(std::forward<_Tp>(__t));
};
-// [iterator.cust.move]/1
-// The name ranges::iter_move denotes a customization point object.
-// The expression ranges::iter_move(E) for a subexpression E is
-// expression-equivalent to:
+// [iterator.cust.move]
+
struct __fn {
- // [iterator.cust.move]/1.1
- // iter_move(E), if E has class or enumeration type and iter_move(E) is a
- // well-formed expression when treated as an unevaluated operand, [...]
template<class _Ip>
- requires __class_or_enum<remove_cvref_t<_Ip>> && __unqualified_iter_move<_Ip>
+ requires __unqualified_iter_move<_Ip>
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator()(_Ip&& __i) const
- noexcept(noexcept(iter_move(_VSTD::forward<_Ip>(__i))))
+ noexcept(noexcept(iter_move(std::forward<_Ip>(__i))))
{
- return iter_move(_VSTD::forward<_Ip>(__i));
+ return iter_move(std::forward<_Ip>(__i));
}
- // [iterator.cust.move]/1.2
- // Otherwise, if the expression *E is well-formed:
- // 1.2.1 if *E is an lvalue, std::move(*E);
- // 1.2.2 otherwise, *E.
template<class _Ip>
- requires (!(__class_or_enum<remove_cvref_t<_Ip>> && __unqualified_iter_move<_Ip>)) &&
- requires(_Ip&& __i) { *_VSTD::forward<_Ip>(__i); }
+ requires (!__unqualified_iter_move<_Ip>) &&
+ requires { *declval<_Ip>(); }
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator()(_Ip&& __i) const
- noexcept(noexcept(*_VSTD::forward<_Ip>(__i)))
+ noexcept(noexcept(*std::forward<_Ip>(__i)))
{
- if constexpr (is_lvalue_reference_v<decltype(*_VSTD::forward<_Ip>(__i))>) {
- return _VSTD::move(*_VSTD::forward<_Ip>(__i));
+ if constexpr (is_lvalue_reference_v<decltype(*declval<_Ip>())>) {
+ return std::move(*std::forward<_Ip>(__i));
} else {
- return *_VSTD::forward<_Ip>(__i);
+ return *std::forward<_Ip>(__i);
}
}
-
- // [iterator.cust.move]/1.3
- // Otherwise, ranges::iter_move(E) is ill-formed.
};
} // namespace __iter_move
diff --git a/contrib/libs/cxxsupp/libcxx/include/__iterator/iterator_traits.h b/contrib/libs/cxxsupp/libcxx/include/__iterator/iterator_traits.h
index 6ffb2ab806..e7d25fc7df 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__iterator/iterator_traits.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__iterator/iterator_traits.h
@@ -198,7 +198,7 @@ concept __cpp17_random_access_iterator =
{ __i + __n } -> same_as<_Ip>;
{ __n + __i } -> same_as<_Ip>;
{ __i - __n } -> same_as<_Ip>;
- { __i - __i } -> same_as<decltype(__n)>;
+ { __i - __i } -> same_as<decltype(__n)>; // NOLINT(misc-redundant-expression) ; This is llvm.org/PR54114
{ __i[__n] } -> convertible_to<iter_reference_t<_Ip>>;
};
} // namespace __iterator_traits_detail
diff --git a/contrib/libs/cxxsupp/libcxx/include/__iterator/mergeable.h b/contrib/libs/cxxsupp/libcxx/include/__iterator/mergeable.h
index 08022aab6d..13db6c7f0b 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__iterator/mergeable.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__iterator/mergeable.h
@@ -22,7 +22,7 @@
_LIBCPP_BEGIN_NAMESPACE_STD
-#if !defined(_LIBCPP_HAS_NO_CONCEPTS) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES)
+#if !defined(_LIBCPP_HAS_NO_CONCEPTS)
template <class _Input1, class _Input2, class _Output,
class _Comp = ranges::less, class _Proj1 = identity, class _Proj2 = identity>
@@ -34,7 +34,7 @@ concept mergeable =
indirectly_copyable<_Input2, _Output> &&
indirect_strict_weak_order<_Comp, projected<_Input1, _Proj1>, projected<_Input2, _Proj2>>;
-#endif // !defined(_LIBCPP_HAS_NO_CONCEPTS) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES)
+#endif // !defined(_LIBCPP_HAS_NO_CONCEPTS)
_LIBCPP_END_NAMESPACE_STD
diff --git a/contrib/libs/cxxsupp/libcxx/include/__iterator/sortable.h b/contrib/libs/cxxsupp/libcxx/include/__iterator/sortable.h
index 77a553d3ec..057e1549df 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__iterator/sortable.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__iterator/sortable.h
@@ -23,14 +23,14 @@
_LIBCPP_BEGIN_NAMESPACE_STD
-#if !defined(_LIBCPP_HAS_NO_CONCEPTS) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES)
+#if !defined(_LIBCPP_HAS_NO_CONCEPTS)
template <class _Iter, class _Comp = ranges::less, class _Proj = identity>
concept sortable =
permutable<_Iter> &&
indirect_strict_weak_order<_Comp, projected<_Iter, _Proj>>;
-#endif // !defined(_LIBCPP_HAS_NO_CONCEPTS) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES)
+#endif // !defined(_LIBCPP_HAS_NO_CONCEPTS)
_LIBCPP_END_NAMESPACE_STD
diff --git a/contrib/libs/cxxsupp/libcxx/include/__iterator/wrap_iter.h b/contrib/libs/cxxsupp/libcxx/include/__iterator/wrap_iter.h
index d91a25ee6c..69e5ee15aa 100644
--- a/contrib/libs/cxxsupp/libcxx/include/__iterator/wrap_iter.h
+++ b/contrib/libs/cxxsupp/libcxx/include/__iterator/wrap_iter.h
@@ -136,13 +136,15 @@ public:
private:
#if _LIBCPP_DEBUG_LEVEL == 2
- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX11 __wrap_iter(const void* __p, iterator_type __x) : __i(__x)
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX11
+ explicit __wrap_iter(const void* __p, iterator_type __x) : __i(__x)
{
if (!__libcpp_is_constant_evaluated())
__get_db()->__insert_ic(this, __p);
}
#else
- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX11 __wrap_iter(iterator_type __x) _NOEXCEPT : __i(__x) {}
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_AFTER_CXX11
+ explicit __wrap_iter(iterator_type __x) _NOEXCEPT : __i(__x) {}
#endif
template <class _Up> friend class __wrap_iter;