Section: 24.3 [iterator.requirements], 24.3.2.3 [iterator.traits] Status: C++17 Submitter: Ville Voutilainen Opened: 2016-01-05 Last modified: 2017-09-07
Priority: 3
View all other issues in [iterator.requirements].
View all issues with C++17 status.
Discussion:
See this reflector discussion for background.
24.3 [iterator.requirements] attempts to establish requirements for iterators, but 24.3.2.3 [iterator.traits]/1 establishes further requirements that must be met in order to author a portable iterator that works with existing implementations. Failing to meet the requirements of the latter will fail to work in practice. The former requirements should reference the latter, normatively.[2016-08-03 Chicago]
Fri AM: Moved to Tentatively Ready
Proposed resolution:
After [iterator.requirements.general]/5, insert the following new paragraph:-?- In addition to the requirements in this sub-clause, the nested typedef-names specified in ([iterator.traits]) shall be provided for the iterator type. [Note: Either the iterator type must provide the typedef-names directly (in which case iterator_traits pick them up automatically), or an iterator_traits specialization must provide them. -end note]