4#ifndef CPG_ITERATOR_HPP
5#define CPG_ITERATOR_HPP
13 #ifdef __TBB_iterators_H
15 template <
typename IntType>
22 template <
typename IntType>
25 static_assert(std::numeric_limits<IntType>::is_integer,
"Cannot instantiate counting_iterator with a non-integer type");
79 template<
typename IndexType =
long long>
80 constexpr decltype(
auto)
friend counting_iterator operator+(difference_type forward, const counting_iterator it)
bool operator<(const counting_iterator &it) const
bool operator!=(const counting_iterator &it) const
std::random_access_iterator_tag iterator_category
counting_iterator operator+(difference_type forward) const
bool operator==(const counting_iterator &it) const
difference_type operator-(const counting_iterator &it) const
std::make_signed< IntType >::type difference_type
counting_iterator operator--(int)
counting_iterator & operator--()
reference operator*() const
bool operator>(const counting_iterator &it) const
counting_iterator operator++(int)
counting_iterator operator-(difference_type backward) const
const IntType & reference
bool operator<=(const counting_iterator &it) const
counting_iterator & operator+=(difference_type forward)
bool operator>=(const counting_iterator &it) const
counting_iterator(IntType init)
counting_iterator & operator++()
value_type operator[](difference_type i) const
counting_iterator & operator-=(difference_type backward)
constexpr decltype(auto) counting_iterator(IndexType idx=IndexType{})