[libcxx-commits] [PATCH] D115806: [libc++] Remove incorrect default constructor in cpp17_input_iterator
Arthur O'Dwyer via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Jan 4 08:19:24 PST 2022
Quuxplusone accepted this revision.
Quuxplusone added inline comments.
This revision is now accepted and ready to land.
================
Comment at: libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/iterator_sentinel.pass.cpp:31
+ constexpr explicit assignable_sentinel(const It& it) : base_(base(it)) {}
+ constexpr operator It() const { return It(base_); }
+ constexpr bool operator==(const It& other) const { return base_ == base(other); }
----------------
Argh, gross. I guess there's really no good way to make a type that says "I am assignable //to// this unrelated type." Making it implicitly-convertible is the best we can do. OK.
================
Comment at: libcxx/test/std/ranges/range.adaptors/range.join.view/iterator/ctor.default.pass.cpp:32-35
template<class T>
-constexpr bool operator==(const cpp17_input_iterator<T*> &lhs, const T *rhs) { return lhs.base() == rhs; }
+constexpr bool operator==(const forward_iterator<T*> &lhs, const T *rhs) { return lhs.base() == rhs; }
template<class T>
+constexpr bool operator==(const T *lhs, const forward_iterator<T*> &rhs) { return rhs.base() == lhs; }
----------------
Optional: leave a TODO comment here that we ought to get rid of these bogus `operator==` in a later patch.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D115806/new/
https://reviews.llvm.org/D115806
More information about the libcxx-commits
mailing list