15template <
class ValueType>
33 [[nodiscard]]
virtual bool
45template <
class ValueType>
53 "ReadViewFwdRange move and move assign constructors should be "
virtual ~ReadViewFwdIter()=default
ReadViewFwdIter base_type
virtual value_type dereference() const =0
ReadViewFwdIter(ReadViewFwdIter const &)=default
ReadViewFwdIter()=default
virtual std::unique_ptr< ReadViewFwdIter > copy() const =0
ReadViewFwdIter & operator=(ReadViewFwdIter const &)=default
virtual bool equal(ReadViewFwdIter const &impl) const =0
virtual void increment()=0
bool operator!=(Iterator const &other) const
bool operator==(Iterator const &other) const
reference operator*() const
std::unique_ptr< iter_base > impl_
Iterator(Iterator &&other) noexcept
value_type const * pointer
std::ptrdiff_t difference_type
value_type const & reference
Iterator(Iterator const &other)
std::optional< value_type > cache_
std::forward_iterator_tag iterator_category
Iterator(ReadView const *view, std::unique_ptr< iter_base > impl)
Iterator & operator=(Iterator const &other)
pointer operator->() const
Iterator & operator=(Iterator &&other) noexcept
ReadViewFwdRange & operator=(ReadViewFwdRange const &)=default
ReadViewFwdIter< ValueType > iter_base
ReadViewFwdRange()=delete
ReadViewFwdRange(ReadViewFwdRange const &)=default
ReadViewFwdRange(ReadView const &view)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.