This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of NAD Editorial status.
Section: 26.7.22.4 [range.elements.sentinel] Status: NAD Editorial Submitter: Hewill Kang Opened: 2021-05-28 Last modified: 2021-06-07
Priority: Not Prioritized
View all issues with NAD Editorial status.
Discussion:
Because the iterator type of the first operator- is const iterator<OtherConst>&, its return type should be range_difference_t<maybe-const<OtherConst, V>>.
[2021-06-07 Fixed by editorial issue #4603. Status changed: New → NAD Editorial.]
Proposed resolution:
This wording is relative to N4885.
Modify 26.7.22.4 [range.elements.sentinel] as indicated:
[…][…] template<bool OtherConst> requires sized_sentinel_for<sentinel_t<Base>, iterator_t<maybe-const<OtherConst, V>>> friend constexpr range_difference_t<Basemaybe-const<OtherConst, V>> operator-(const iterator<OtherConst>& x, const sentinel& y); template<bool OtherConst> requires sized_sentinel_for<sentinel_t<Base>, iterator_t<maybe-const<OtherConst, V>>> friend constexpr range_difference_t<maybe-const<OtherConst, V>> operator-(const sentinel& x, const iterator<OtherConst>& y); }; }template<bool OtherConst> requires sized_sentinel_for<sentinel_t<Base>, iterator_t<maybe-const<OtherConst, V>>> friend constexpr range_difference_t<Basemaybe-const<OtherConst, V>> operator-(const iterator<OtherConst>& x, const sentinel& y);-5- Effects: Equivalent to: return x.current_ - y.end_;