[libcxx-commits] [PATCH] D128744: [libc++][ranges] Implement `ranges::partial_sort`.
Konstantin Varlamov via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Jul 12 02:39:18 PDT 2022
var-const marked 3 inline comments as done.
var-const added inline comments.
================
Comment at: libcxx/include/__algorithm/make_heap.h:30
{
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
difference_type __n = __last - __first;
----------------
huixie90 wrote:
> huixie90 wrote:
> > For C++20 algorithms, we should use `iter_difference_t `.
> >
> > the `difference_type` is coming from `incrementable_traits` when `iterator_traits` is not specialized
> >
> > (Note this applies to all other usages of `difference_type`)
> Actually, it is fine for this algorithm to use iterator_traits
>
> since the input are required to model c++20 random_access_iterator and C++ 20 random_access_iterator implies c++17 input iterator and that makes sure that iterator_traits exists and consistent with c++20’s iter_differnece_t (and iter_value_t for the value_type)
>
> I think this can be a problem only in algorithms that take c++20 input iterators, because c++ 20 input_iterators can have empty iterator_traits
Thanks a lot for spotting this. I've added checking algorithms that take input iterators to my backlog.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D128744/new/
https://reviews.llvm.org/D128744
More information about the libcxx-commits
mailing list