basic_istream_view needs to initialize value_
Casey Carter

Created on 2021-06-15.00:00:00 last changed 7 days ago


Date: 2021-10-14.09:56:08

Proposed resolution:

Wording relative to the post-202106 working draft (as near as possible). This PR is currently being implemented in MSVC.

  1. Modify [range.istream.view] as indicated:

    namespace std::ranges {
      template<movable Val, class CharT, class Traits>
        requires default_initializable<Val> &&
                 stream-extractable<Val, CharT, Traits>
      class basic_istream_view : public view_interface<basic_istream_view<Val, CharT, Traits>> {
        Val value_ = Val(); // exposition only
Date: 2021-10-14.00:00:00

[ 2021-10-14 Approved at October 2021 virtual plenary. Status changed: Voting → WP. ]

Date: 2021-06-15.00:00:00

[ 2021-06-23; Reflector poll ]

Set status to Tentatively Ready after seven votes in favour during reflector poll.

Date: 2021-06-15.00:00:00

P2325R3 removes the default member initializers for basic_istream_view's exposition-only stream_ and value_ members. Consequently, copying a basic_istream_view before the first call to begin may produce undefined behavior since doing so necessarily copies the uninitialized value_. We should restore value_'s default member initializer and remove this particular footgun.

Date User Action Args
2021-10-14 09:56:08adminsetmessages: + msg12131
2021-10-14 09:56:08adminsetstatus: voting -> wp
2021-09-29 12:57:28adminsetstatus: ready -> voting
2021-06-23 14:16:45adminsetmessages: + msg11964
2021-06-23 14:16:45adminsetstatus: new -> ready
2021-06-19 13:48:40adminsetmessages: + msg11936
2021-06-15 00:00:00admincreate