[libcxx-commits] [PATCH] D99873: [libcxx] adds `std::ranges::iter_move` and `std::iter_rvalue_reference_t`
Christopher Di Bella via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Sat Apr 17 17:25:59 PDT 2021
cjdb requested changes to this revision.
cjdb added inline comments.
This revision now requires changes to proceed.
================
Comment at: libcxx/include/__iterator/iter_move.h:59
+ constexpr decltype(auto) operator()(_Ip&& __i) const
+ noexcept(noexcept(*_VSTD::forward<_Ip>(__i)))
+ {
----------------
This noexcept specifier doesn't account for a throwing move.
================
Comment at: libcxx/test/std/iterators/iterator.requirements/iterator.cust/iterator.cust.move/iter_move.pass.cpp:186
+ static_assert(check_iter_move());
+ assert(check_iter_move());
+
----------------
zoecarver wrote:
> ldionne wrote:
> > cjdb wrote:
> > > zoecarver wrote:
> > > > No need to call assert here.
> > > Don't we want to check the run-time value as well?
> > Yes, I think we do. I'm leaving the `assert` in place.
> Why do we want to check the runtime value? The end of `check_iter_move` is `return true;` we're not "checking" anything.
Sure, but the contents of `check_iter_move` need to be evaluated at both compile-time and run-time.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D99873/new/
https://reviews.llvm.org/D99873
More information about the libcxx-commits
mailing list