reverse_iterator
is does not compile for fancy pointersSection: 24.5.1.6 [reverse.iter.elem] Status: Dup Submitter: Billy Robert O'Neal III Opened: 2016-09-23 Last modified: 2021-06-06
Priority: Not Prioritized
View all other issues in [reverse.iter.elem].
View all issues with Dup status.
Duplicate of: 1052
Discussion:
std::reverse_iterator<Iterator>::operator->()
is specified to call addressof(operator*())
,
but it returns iterator_traits<Iterator>::pointer
, which may be a fancy pointer type from which no
conversion from T*
is possible. It should instead delegate to the underlying iterator's operator->()
.
[Issues processing Telecon 2016-10-7]
Set status to Duplicate
Proposed resolution:
This wording is relative to N4606.
Modify [reverse.iter.opref] as indicated:
constexpr pointer operator->() const;-1-
Returns:Effects: Ifaddressof(operator*())
.Iterator
is a pointer type, as if by:Iterator tmp = current; return --tmp;Otherwise, as if by:
Iterator tmp = current; --tmp; return tmp.operator->();