Date
2024-03-15.13:55:18
Message id
14017

Content

Proposed resolution:

This wording is relative to N4958.

  1. Modify [const.iterators.iterator], class template basic_const_iterator synopsis, as indicated:

    namespace std {
      […]
    
      template<input_iterator Iterator>
      class basic_const_iterator {
        […]
        constexpr const Iterator& base() const & noexcept;
        constexpr Iterator base() &&;
        […]
      };
    }
    
  2. Modify [const.iterators.ops] as indicated:

    constexpr const Iterator& base() const & noexcept;
    

    -4- Effects: Equivalent to: return current_;

    constexpr Iterator base() &&;
    

    -5- Effects: Equivalent to: return std::move(current_);

  3. Modify [range.as.const.view] as indicated:

    namespace std::ranges {
      template<view V>
        requires input_range<V>
      class as_const_view : public view_interface<as_const_view<V>> {
        […]
        constexpr V base() const & requires copy_constructible<V> { return base_; }
        constexpr V base() && { return std::move(base_); }
        […]
      };
    }