================ @@ -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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits