[libcxx-commits] [PATCH] D103335: [libcxx][ranges] Adds	`common_iterator`.
    Tim Song via Phabricator via libcxx-commits 
    libcxx-commits at lists.llvm.org
       
    Wed Jul 14 11:45:51 PDT 2021
    
    
  
tcanens added inline comments.
================
Comment at: libcxx/include/__iterator/common_iterator.h:169
+
+    if (__x_index == __y_index)
+      return true;
----------------
zoecarver wrote:
> ldionne wrote:
> > How is this behavior really what we want? IIUC, that means that if you compare two `common_iterators` that both contain different iterators (say `It1` and `It2`) that are not comparable to each other, the `common_iterator`s will compare equal to each other even if `It1` and `It2` are "pointing" to entirely different elements. Am I misunderstanding something here, or that's an incredibly subtle (and broken) behavior to have at runtime? @tcanens Can you shed some light on this?
> > 
> > In all cases, we need a test where we exercise that.
> We should assert these aren't both zero, even though it's non-conforming, people will thank us.
This is meant for C++20 input iterators that aren't comparable with each other. Because incrementing an input iterator invalidates all copies, you can't have two valid iterators pointing to different elements in the same range. 
> We should assert these aren't both zero, even though it's non-conforming, people will thank us.
Please don't. `i == i` had better work.
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D103335/new/
https://reviews.llvm.org/D103335
    
    
More information about the libcxx-commits
mailing list