3276. Class split_view::outer_iterator::value_type should inherit from view_interface

Section: 25.7.16.4 [range.lazy.split.outer.value] Status: C++20 Submitter: Eric Niebler Opened: 2019-09-09 Last modified: 2023-02-07

Priority: 0

View all other issues in [range.lazy.split.outer.value].

View all issues with C++20 status.

Discussion:

It is a view. It should have all the view goodies. Suggested priority P1 because it affects ABI.

The proposed change has been implemented and tested in range-v3.

[2019-09-24 Issue Prioritization]

Status to Tentatively Ready and priority to 0 after six positive votes on the reflector.

Proposed resolution:

This wording is relative to N4830.

  1. Modify [range.split.outer.value], class split_view::outer_iterator::value_type synopsis, as indicated:

    namespace std::ranges {
      template<class V, class Pattern>
      template<bool Const>
      struct split_view<V, Pattern>::outer_iterator<Const>::value_type 
        : view_interface<value_type> {
      private:
        outer_iterator i_ = outer_iterator(); // exposition only
      public:
        value_type() = default;
        constexpr explicit value_type(outer_iterator i);
    
        constexpr inner_iterator<Const> begin() const;
        constexpr default_sentinel_t end() const;
      };
    }