13#ifndef DUMUX_COMMON_ENUMERATE_HH
14#define DUMUX_COMMON_ENUMERATE_HH
28template <
typename Range,
29 typename RangeIterator =
decltype(std::begin(std::declval<Range>())),
30 typename =
decltype(std::end(std::declval<Range>()))>
37 bool operator != (
const Iterator & other)
const {
return iter != other.iter; }
38 void operator ++ () { ++i; ++iter; }
39 auto operator * ()
const {
return std::tie(i, *iter); }
45 auto begin() {
return Iterator{ 0, std::begin(iterable) }; }
46 auto end() {
return Iterator{ 0, std::end(iterable) }; }
49 return Iterable{ std::forward<Range>(iterable) };
constexpr bool operator!=(Tag< T1 >, Tag< T2 >)
Definition: tag.hh:38
constexpr auto enumerate(Range &&iterable)
A Python-like enumerate function.
Definition: enumerate.hh:31