[ADT] Add `llvm::range_size` function for generic ranges
This function follows `std::ranges::size` from C++20. It is intended mainly for generic code that does not know the exact range type. I did not modify the existing `llvm::size` function because it has a strict guarantee of O(1) running time, and we cannot guarantee that when we delegate size check to user-defined size functions. Use `range_size` to optimize size checks in `zip`* and `enumerate` functions. Before that, we would have to perform linear scans for ranges without random access iterators. This is the last change I have planned in the series that overhauls `zip`* and `enumerate`. Reviewed By: dblaikie, zero9178 Differential Revision: https://reviews.llvm.org/D146231
parent
b904e68f
Please register or sign in to comment