Date
2020-11-09.20:31:48
Message id
11549

Content

Proposed resolution:

This wording is relative to N4861.

  1. Modify [range.take.while.view], class template take_while_view synopsis, as indicated:

    namespace std::ranges {
        template<view V, class Pred>
          requires input_range<V> && is_object_v<Pred> &&
                   indirect_unary_predicate<const Pred, iterator_t<V>>
        class take_while_view : public view_interface<take_while_view<V, Pred>> {
        […]
    
        constexpr auto begin() requires (!simple-view<V>)
        { return ranges::begin(base_); }
    
        constexpr auto begin() const requires range<const V> && indirect_unary_predicate<const Pred, iterator_t<const V>>
        { return ranges::begin(base_); }
    
        constexpr auto end() requires (!simple-view<V>)
        { return sentinel<false>(ranges::end(base_), addressof(*pred_)); }
    
        constexpr auto end() const requires range<const V> && indirect_unary_predicate<const Pred, iterator_t<const V>>
        { return sentinel<true>(ranges::end(base_), addressof(*pred_)); }
        };
    }