[libcxx-commits] [PATCH] D101737: [libcxx] Implement view.interface.

Christopher Di Bella via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Mon May 3 12:48:07 PDT 2021

cjdb added inline comments.

Comment at: libcxx/test/std/ranges/range.utility/view.interface/view.interface.pass.cpp:48-51
+// So that we conform to sized_sentinel_for.
+constexpr std::ptrdiff_t operator-(const ForwardIter& x, const ForwardIter& y) {
+    return x.base() - y.base();
zoecarver wrote:
> cjdb wrote:
> > Nit: consider making this a hidden friend.
> Am I able to define a hidden friend out of line? I don't want to update `forward_iterator` (unless we agree that would be a good idea). 
Oh, I see, it's not for the above type. My mistake.

Comment at: libcxx/test/std/ranges/range.utility/view.interface/view.interface.pass.cpp:155
+// TODO: why is the child member picked?
+//   assert(ranges::data(din) == nullptr);
zoecarver wrote:
> cjdb wrote:
> > I think `view_interface::data` (the real one) is a function template, so it'll prefer the existing member function. @tcanens how far from the mark am I?
> That would make sense, except that it's //the child// that's getting called, i.e,  `view_interface::data`. Regardless of which one is a template, I thought it would always go for the parent's definition. 
BTW, the same is [[ https://godbolt.org/z/vGa9P6e8x | true for SFINAE ]].

  rG LLVM Github Monorepo



More information about the libcxx-commits mailing list