dblaikie added inline comments.

================
Comment at: llvm/include/llvm/IR/BasicBlock.h:324-325
+    template <typename PHINodeU, typename BBIteratorU,
+              typename = std::enable_if_t<
+                  std::is_convertible<PHINodeU *, PHINodeT *>::value>>
     phi_iterator_impl(const phi_iterator_impl<PHINodeU, BBIteratorU> &Arg)
----------------
Quuxplusone wrote:
> dblaikie wrote:
> > BRevzin wrote:
> > > dblaikie wrote:
> > > > What tripped over/required this SFINAE?
> > > There's somewhere which compared a const iterator to a non-const 
> > > iterator, that ends up doing conversions in both directions under C++20 
> > > rules, one direction of which is perfectly fine and the other was a hard 
> > > error. Need to make the non-const iterator not constructible from a const 
> > > iterator.
> > Is this true for all iterators? Or some quirk of how this one is 
> > written/used (that could be fixed/changed there instead)?
> IMO there is a (much) bigger task hiding here, which is to audit every type 
> in the codebase whose name contains the string "Iterator" and compare them to 
> the C++20 Ranges `std::forward_iterator` concept. My impression is that the 
> vast majority of real-world "iterator types" are not iterators according to 
> C++20 Ranges, and that this can have arbitrarily weird effects when you mix 
> them with the C++20 STL.
> 
> However, that is //massive// scope creep re this particular patch. I think 
> the larger question of "do all our iterators need X / are all our iterators 
> written wrong" should be scoped-outside-of this patch.
Sorry, not suggesting that kind of scope creep - but do want to understand 
whether this is representative of the way code should generally be written, or 
whether this is working around some other issue/different fix.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D78938/new/

https://reviews.llvm.org/D78938

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to