[libcxx-commits] [libcxx] be86221 - [libc++] Implement any_of in terms of find_if (#207274)
via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Jul 23 06:38:26 PDT 2026
Author: Louis Dionne
Date: 2026-07-23T09:38:21-04:00
New Revision: be86221af36d62be2e25a8b6e89ae8199d9dce0a
URL: https://github.com/llvm/llvm-project/commit/be86221af36d62be2e25a8b6e89ae8199d9dce0a
DIFF: https://github.com/llvm/llvm-project/commit/be86221af36d62be2e25a8b6e89ae8199d9dce0a.diff
LOG: [libc++] Implement any_of in terms of find_if (#207274)
This way, any optimizations in find_if will be picked up by any_of.
Closes #129310
Added:
Modified:
libcxx/include/__algorithm/any_of.h
Removed:
################################################################################
diff --git a/libcxx/include/__algorithm/any_of.h b/libcxx/include/__algorithm/any_of.h
index 4b6eb94517286..119979d749077 100644
--- a/libcxx/include/__algorithm/any_of.h
+++ b/libcxx/include/__algorithm/any_of.h
@@ -10,33 +10,35 @@
#ifndef _LIBCPP___ALGORITHM_ANY_OF_H
#define _LIBCPP___ALGORITHM_ANY_OF_H
+#include <__algorithm/find_if.h>
#include <__config>
#include <__functional/identity.h>
-#include <__type_traits/invoke.h>
+#include <__utility/move.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#endif
+_LIBCPP_PUSH_MACROS
+#include <__undef_macros>
+
_LIBCPP_BEGIN_NAMESPACE_STD
template <class _Iter, class _Sent, class _Proj, class _Pred>
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool
__any_of(_Iter __first, _Sent __last, _Pred& __pred, _Proj& __proj) {
- for (; __first != __last; ++__first) {
- if (std::__invoke(__pred, std::__invoke(__proj, *__first)))
- return true;
- }
- return false;
+ return std::__find_if(std::move(__first), __last, __pred, __proj) != __last;
}
template <class _InputIterator, class _Predicate>
[[__nodiscard__]] inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 bool
any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) {
__identity __proj;
- return std::__any_of(__first, __last, __pred, __proj);
+ return std::__any_of(std::move(__first), std::move(__last), __pred, __proj);
}
_LIBCPP_END_NAMESPACE_STD
+_LIBCPP_POP_MACROS
+
#endif // _LIBCPP___ALGORITHM_ANY_OF_H
More information about the libcxx-commits
mailing list