[clang-tools-extra] [llvm] [llvm][ADT] Add wrappers to `std::includes` (PR #143297)

Longsheng Mou via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 9 07:46:20 PDT 2025


================
@@ -1881,6 +1881,19 @@ OutputIt move(R &&Range, OutputIt Out) {
   return std::move(adl_begin(Range), adl_end(Range), Out);
 }
 
+/// Provide wrappers to std::includes which take ranges instead of having to
+/// pass begin/end explicitly.
+template <typename R1, typename R2> bool includes(R1 &&Range1, R2 &&Range2) {
+  return std::includes(adl_begin(Range1), adl_end(Range1), adl_begin(Range2),
----------------
CoTinker wrote:

Maybe like:
```
template <typename R1, typename R2> bool includes(R1 &&Range1, R2 &&Range2) {
#ifndef NDEBUG
  assert(is_sorted(Range1) && "Range1 must be sorted in non-descending order");
  assert(is_sorted(Range2) && "Range2 must be sorted in non-descending order");
#endif
  return std::includes(adl_begin(Range1), adl_end(Range1), adl_begin(Range2),
                       adl_end(Range2));
}
```
But it seems weird.


https://github.com/llvm/llvm-project/pull/143297


More information about the llvm-commits mailing list