Open
Description
We've identified several issues with the iterator checking/unwrapping machinery, all of which should probably have fixes designed at the same time to avoid conflict:
<algorithm>
: Unwrapping output iterators in range algorithms #893 "<algorithm>
: Unwrapping output iterators in range algorithms"<algorithm>
: unqualified calls to_Adl_verify_range
incorrectly cause instantiation #1596 "<algorithm>
: unqualified calls to_Adl_verify_range
incorrectly cause instantiation"<algorithm>
: Re-evaluate iterator unwrapping design #1760 "<algorithm>
: Re-evaluate iterator unwrapping design"<algorithm>
:ranges::find()
rejects some sentinels due to iterator unwrapping #2591 "<algorithm>
:ranges::find
rejects some sentinels due to iterator unwrapping" (A much more widespread issue than the title suggests)<memory>
:ranges::uninitialized_move_n
andranges::uninitialized_copy_n
missing move to rewrapinput_iterator
#2962 "<memory>
:ranges::uninitialized_move_n
andranges::uninitialized_copy_n
missingmove
to rewrapinput_iterator
(Every bit as narrow an issue as the title suggests)_Get_unwrapped
et. al. should (almost) always benoexcept
#2989 "<xutility>
:_Get_unwrapped
et al. should always benoexcept
"- Many view iterators do not contain an
_Unwrapped()
member function #2997 Many view iterators do not contain an `_Unwrapped() member function <iterator>
:move_sentinel
could be unwrappable #3009 "<iterator>
:move_sentinel
should be unwrappable"- Range algorithms don't work when used with unwrappable iterators and custom sentinels #3010 "Range algorithms don't work when used with unwrappable iterators and custom sentinels"
- STL: Unwrapping class / pointer pairs #3050 "STL: Unwrapping class / pointer pairs"