3302. Range adaptor objects keys and values are unspecified

Section: 25.2 [ranges.syn] Status: C++20 Submitter: Michel Morin Opened: 2019-10-04 Last modified: 2021-02-25

Priority: 1

View other active issues in [ranges.syn].

View all other issues in [ranges.syn].

View all issues with C++20 status.

Discussion:

This issue was submitted as editorial issue cplusplus/draft#3231 but had been classified as non-editorial.

keys and values are listed in 25.2 [ranges.syn], but not specified. It seems that P1035R7 forgot to specify them (as elements<0> and elements<1>).

[2019-10-31 Issue Prioritization]

Priority to 1 after reflector discussion.

[2019-11 Wednesday night issue processing in Belfast.]

Status to Ready.

Proposed resolution:

This wording is relative to N4830.

  1. Modify 25.2 [ranges.syn], header <ranges> synopsis, as indicated:

    namespace std::ranges {
      […]
      
      template<class R>
        using keys_view = elements_view<all_view<R>, 0>;
      template<class R>
        using values_view = elements_view<all_view<R>, 1>;
      namespace views {
        template<size_t N>
          inline constexpr unspecified elements = unspecified;
        inline constexpr autounspecified keys = elements<0>unspecified;
        inline constexpr autounspecified values = elements<1>unspecified;
      }  
    }
    […]