2726. [recursive_]directory_iterator::increment(error_code&) is underspecified

Section: 30.11.12.1 [fs.dir.itr.members], 30.11.13.1 [fs.rec.dir.itr.members] Status: C++17 Submitter: Daniel Krügler Opened: 2016-06-20 Last modified: 2017-07-30

Priority: 0

View other active issues in [fs.dir.itr.members].

View all other issues in [fs.dir.itr.members].

View all issues with C++17 status.

Discussion:

Setting X as being either directory_iterator or recursive_directory_iterator there exists a member function in X,

X& increment(error_code& ec) noexcept;

whose effects are described as:

As specified by Input iterators (24.2.3).

which is somewhat surprising, because for input iterators there is no call expression naming increment specified.

The intention here is to consider increment as a another name for the prefix increment operator of iterators, but that needs to be expressed somewhere.

[2016-06 Oulu]

Moved to P0/Ready during issues prioritization.

Friday: status to Immediate

Proposed resolution:

This wording is relative to N4594.

[Drafting note: The suggested wording for this issue also repairs the information loss that had been caused by the third bullet of the proposed resolution of 2704]

  1. Change 30.11.12.1 [fs.dir.itr.members] as indicated:

    directory_iterator& operator++();
    directory_iterator& increment(error_code& ec) noexcept;
    

    -10- Effects: As specified by for the prefix increment operation of Input iterators (27.2.3 [input.iterators]).

  2. Change 30.11.13.1 [fs.rec.dir.itr.members] as indicated:

    recursive_directory_iterator& operator++();
    recursive_directory_iterator& increment(error_code& ec) noexcept;
    

    […]

    -27- Effects: As specified by for the prefix increment operation of Input iterators (27.2.3 [input.iterators]), except that: […]