template <bool Const>
class IteratorImpl
Defined at line 64 of file ../../sdk/lib/c/dlfcn/dl/test/../concat-view.h
The iterator implementation holds a pointer to the containing concat_view
object, and a std::variant
<std
::ranges::iterator_t
<Views
>...>. It starts
at variant index 0 with the begin() of the first view. When that hits the
end() of the first view, then it moves up to variant index 1 with the
begin() of the second view; and so on.
This makes operator* very easy since it's just a std::visit. Likewise,
operator== comes entirely for free with an explicit default (and thus an
implicitly defaulted operator!= from it too!) because std::variant is
conveniently comparable to treat different variant index as not equal and
same variant index as the two underlying iterators' equality.
Public Methods
void IteratorImpl<Const> ()
Defined at line 71 of file ../../sdk/lib/c/dlfcn/dl/test/../concat-view.h
void IteratorImpl<Const> (const IteratorImpl<Const> & )
Defined at line 72 of file ../../sdk/lib/c/dlfcn/dl/test/../concat-view.h
IteratorImpl<Const> & operator= (const IteratorImpl<Const> & )
Defined at line 73 of file ../../sdk/lib/c/dlfcn/dl/test/../concat-view.h
bool operator== (const IteratorImpl<Const> & )
Defined at line 75 of file ../../sdk/lib/c/dlfcn/dl/test/../concat-view.h
IteratorImpl<Const> & operator++ ()
Defined at line 77 of file ../../sdk/lib/c/dlfcn/dl/test/../concat-view.h
IteratorImpl<Const> operator++ (int )
Defined at line 85 of file ../../sdk/lib/c/dlfcn/dl/test/../concat-view.h
decltype(auto) operator* ()
Defined at line 91 of file ../../sdk/lib/c/dlfcn/dl/test/../concat-view.h
decltype(auto) operator-> ()
Defined at line 95 of file ../../sdk/lib/c/dlfcn/dl/test/../concat-view.h
Friends
template <bool Const>
class ConcatView