10 template<
bool IsConst>
13 using iterator_category = std::forward_iterator_tag;
15 using difference_type = uint32_t;
17 using pointer =
typename std::conditional<
21 using reference =
typename std::conditional<
26 return start_ == rhs.start_ && current_ == rhs.current_;
30 return !(*
this == rhs);
36 template<
bool _IsConst=IsConst>
37 typename std::enable_if<!_IsConst, pointer>::type
42 template<
bool _IsConst=IsConst>
43 typename std::enable_if<!_IsConst, reference>::type
45 return const_cast<reference
>(*current_);
49 template<
bool _IsConst=IsConst>
50 typename std::enable_if<_IsConst, pointer>::type
55 template<
bool _IsConst=IsConst>
56 typename std::enable_if<_IsConst, reference>::type