Movatterモバイル変換


[0]ホーム

URL:



This page is a snapshot from the LWG issues list, see theLibrary Active Issues List for more information and the meaning ofC++17 status.

2437.iterator_traits<OutIt>::reference can and can't bevoid

Section: 24.3.5.2[iterator.iterators]Status:C++17Submitter: Stephan T. LavavejOpened: 2014-10-01Last modified: 2017-07-30

Priority:3

View all otherissues in [iterator.iterators].

View all issues withC++17 status.

Discussion:

24.3.5.2[iterator.iterators]/2 requires anIterator's*r to returnreference, i.e.iterator_traits<X>::reference according to 24.3.1[iterator.requirements.general]/11.

24.3.5.4[output.iterators]/1 requires anOutputIterator's*r = o to do its job, so*r clearly can't returnvoid.

24.3.2.3[iterator.traits]/1 says: "In the case of an output iterator, the types

iterator_traits<Iterator>::difference_typeiterator_traits<Iterator>::value_typeiterator_traits<Iterator>::referenceiterator_traits<Iterator>::pointer

may be defined asvoid."

This is contradictory. I suggest fixing this by moving the offending requirement down fromIterator toInputIterator, and makingIterator say that*r returns an unspecified type. This will have the following effects:

[2015-02 Cologne]

EF: This is related to2438(i). MC: I'd like to take up 2438 right after this.

AM: Does anyone think this is wrong?

GR: Why do we give output iterators to have reference type void? AM: we've mandated that certain output iterators define it as void since 1998. GR: Oh OK, I'm satisfied.

Accepted. And2438(i) is already Ready.

Proposed resolution:

This wording is relative to N3936.

  1. In 24.3.5.2[iterator.iterators] Table 106 "Iterator requirements" change as indicated:

    Table 106 — Iterator requirements
    ExpressionReturn typeOperational
    semantics
    Assertion/note pre-/post-condition
    *rreferenceunspecifiedpre:r is dereferenceable.
  2. In 24.3.5.3[input.iterators] Table 107 "Input iterator requirements" change as indicated:

    Table 107 — Input iterator requirements (in addition to Iterator)
    ExpressionReturn typeOperational
    semantics
    Assertion/note pre-/post-condition
    *areference, convertible toT[…]

[8]ページ先頭

©2009-2025 Movatter.jp