An iterator that wraps some other iterator, keeping track of the relative position of that iterator based on calls to arithmetic operators such as operator++(), operator--(), operator+(), and operator-(). More...
#include <juce_Enumerate.h>

Public Member Functions | |
| constexpr | EnumerateIterator ()=default |
| Default constructor. | |
| constexpr | EnumerateIterator (Iter iter) |
| Wraps the provided iterator, and sets the internal count to 0. | |
| constexpr | EnumerateIterator (Iter iter, Index ind) |
| Wraps the provided iterator, and sets the internal count to the provided value. | |
| template<typename OtherIter , typename OtherInd > | |
| constexpr bool | operator!= (const EnumerateIterator< OtherIter, OtherInd > &other) const |
| constexpr Enumerated< Index, decltype(*std::declval< Iter >())> | operator* () const |
| Dereferencing the iterator produces an Enumerated instance by value. | |
| constexpr EnumerateIterator & | operator++ () |
| Increments the iterator and the index. | |
| constexpr EnumerateIterator | operator++ (int) |
| Increments the iterator and the index. | |
| template<typename I , std::enable_if_t< detail::canAddAssign< Iter &, I >, int > = 0> | |
| constexpr EnumerateIterator & | operator+= (I diff) |
| Adds an integral value to both the iterator and the index. | |
| template<typename OtherIter , typename OtherInd , std::enable_if_t< detail::canSub< Iter, OtherIter >, int > = 0> | |
| constexpr auto | operator- (const EnumerateIterator< OtherIter, OtherInd > &other) const |
| Subtracts another enumerate iterator from this one, producing the same result as subtracting the two wrapped iterators. | |
| template<typename T = Iter, std::enable_if_t< detail::canPreDecrement< T >, int > = 0> | |
| constexpr EnumerateIterator & | operator-- () |
| Decrements the iterator and the index. | |
| template<typename T = Iter, std::enable_if_t< detail::canPreDecrement< T >, int > = 0> | |
| constexpr EnumerateIterator | operator-- (int) |
| Decrements the iterator and the index. | |
| template<typename I , std::enable_if_t< detail::canSubAssign< Iter &, I >, int > = 0> | |
| constexpr EnumerateIterator & | operator-= (I diff) |
| Subtracts an integral value from both the iterator and the index. | |
| template<typename OtherIter , typename OtherInd , std::enable_if_t< detail::canLessThan< Iter, OtherIter >, int > = 0> | |
| constexpr bool | operator< (const EnumerateIterator< OtherIter, OtherInd > &other) const |
| Returns the result of comparing the two wrapped iterators. | |
| template<typename OtherIter , typename OtherInd , std::enable_if_t< detail::canLessThanEqual< Iter, OtherIter >, int > = 0> | |
| constexpr bool | operator<= (const EnumerateIterator< OtherIter, OtherInd > &other) const |
| Returns the result of comparing the two wrapped iterators. | |
| template<typename OtherIter , typename OtherInd > | |
| constexpr bool | operator== (const EnumerateIterator< OtherIter, OtherInd > &other) const |
| Two EnumerateIterators are considered equal if the wrapped iterators are equal. | |
| template<typename OtherIter , typename OtherInd , std::enable_if_t< detail::canGreaterThan< Iter, OtherIter >, int > = 0> | |
| constexpr bool | operator> (const EnumerateIterator< OtherIter, OtherInd > &other) const |
| Returns the result of comparing the two wrapped iterators. | |
| template<typename OtherIter , typename OtherInd , std::enable_if_t< detail::canGreaterThanEqual< Iter, OtherIter >, int > = 0> | |
| constexpr bool | operator>= (const EnumerateIterator< OtherIter, OtherInd > &other) const |
| Returns the result of comparing the two wrapped iterators. | |
| template<typename I , std::enable_if_t< detail::canAdd< EnumerateIterator, I >, int > = 0> | |
| constexpr auto | operator[] (I diff) const |
| Indexes into this iterator, equivalent to adding an integral value to this iterator and then dereferencing the result. | |
Private Attributes | |
| Index | index = 0 |
| Iter | iterator {} |
Friends | |
| template<typename I , std::enable_if_t< detail::canAddAssign< EnumerateIterator &, I >, int > = 0> | |
| constexpr friend auto | operator+ (EnumerateIterator iter, I ind) |
| Returns the result of adding an integral value to this iterator. | |
| template<typename I , std::enable_if_t< detail::canAddAssign< EnumerateIterator &, I >, int > = 0> | |
| constexpr friend auto | operator+ (I ind, EnumerateIterator iter) |
| Returns the result of adding an integral value to this iterator. | |
| template<typename I , std::enable_if_t< detail::canSubAssign< EnumerateIterator &, I >, int > = 0> | |
| constexpr friend auto | operator- (EnumerateIterator iter, I ind) |
| Returns the result of subtracting an integral value from this iterator. | |
An iterator that wraps some other iterator, keeping track of the relative position of that iterator based on calls to arithmetic operators such as operator++(), operator--(), operator+(), and operator-().
You should never need to construct an instance of this type yourself. Instead, use the enumerate() function to construct a range that can be enumerated.
|
constexprdefault |
Default constructor.
|
inlineexplicitconstexpr |
Wraps the provided iterator, and sets the internal count to 0.
|
inlineconstexpr |
Wraps the provided iterator, and sets the internal count to the provided value.
|
inlineconstexpr |
References juce::EnumerateIterator< Iter, Index >::operator==().
|
inlineconstexpr |
Dereferencing the iterator produces an Enumerated instance by value.
This type holds a copy of the iterator's current index, along with the result of dereferencing the wrapped iterator (normally a reference type).
References juce::EnumerateIterator< Iter, Index >::index, and juce::EnumerateIterator< Iter, Index >::iterator.
|
inlineconstexpr |
Increments the iterator and the index.
References juce::EnumerateIterator< Iter, Index >::index, and juce::EnumerateIterator< Iter, Index >::iterator.
Referenced by juce::EnumerateIterator< Iter, Index >::operator++().
|
inlineconstexpr |
Increments the iterator and the index.
References juce::EnumerateIterator< Iter, Index >::operator++().
|
inlineconstexpr |
Adds an integral value to both the iterator and the index.
Only participates in overload resolution if the iterator can be add-assigned.
References juce::EnumerateIterator< Iter, Index >::index, and juce::EnumerateIterator< Iter, Index >::iterator.
|
inlineconstexpr |
Subtracts another enumerate iterator from this one, producing the same result as subtracting the two wrapped iterators.
For random-access iterators, this will normally return the distance between the two iterators. Only participates in overload resolution if the wrapped iterators can be subtracted.
References juce::EnumerateIterator< Iter, Index >::iterator.
|
inlineconstexpr |
Decrements the iterator and the index.
Only participates in overload resolution if the iterator can be pre-decremented.
References juce::EnumerateIterator< Iter, Index >::index, and juce::EnumerateIterator< Iter, Index >::iterator.
Referenced by juce::EnumerateIterator< Iter, Index >::operator--().
|
inlineconstexpr |
Decrements the iterator and the index.
Only participates in overload resolution if the iterator can be pre-decremented.
References juce::EnumerateIterator< Iter, Index >::operator--().
|
inlineconstexpr |
Subtracts an integral value from both the iterator and the index.
Only participates in overload resolution if the iterator can be sub-assigned.
References juce::EnumerateIterator< Iter, Index >::index, and juce::EnumerateIterator< Iter, Index >::iterator.
|
inlineconstexpr |
Returns the result of comparing the two wrapped iterators.
Only participates in overload resolution if the wrapped iterators are comparable.
References juce::EnumerateIterator< Iter, Index >::iterator.
|
inlineconstexpr |
Returns the result of comparing the two wrapped iterators.
Only participates in overload resolution if the wrapped iterators are comparable.
References juce::EnumerateIterator< Iter, Index >::iterator.
|
inlineconstexpr |
Two EnumerateIterators are considered equal if the wrapped iterators are equal.
References juce::EnumerateIterator< Iter, Index >::iterator.
Referenced by juce::EnumerateIterator< Iter, Index >::operator!=().
|
inlineconstexpr |
Returns the result of comparing the two wrapped iterators.
Only participates in overload resolution if the wrapped iterators are comparable.
References juce::EnumerateIterator< Iter, Index >::iterator.
|
inlineconstexpr |
Returns the result of comparing the two wrapped iterators.
Only participates in overload resolution if the wrapped iterators are comparable.
References juce::EnumerateIterator< Iter, Index >::iterator.
|
inlineconstexpr |
Indexes into this iterator, equivalent to adding an integral value to this iterator and then dereferencing the result.
Only participates in overload resolution if the wrapped iterator allows addition of integral values.
|
friend |
Returns the result of adding an integral value to this iterator.
Only participates in overload resolution if addition is supported by the wrapped iterator.
|
friend |
Returns the result of adding an integral value to this iterator.
Only participates in overload resolution if addition is supported by the wrapped iterator.
|
friend |
Returns the result of subtracting an integral value from this iterator.
Only participates in overload resolution if subtraction is supported by the wrapped iterator.
|
private |
|
private |
Referenced by juce::EnumerateIterator< Iter, Index >::operator*(), juce::EnumerateIterator< Iter, Index >::operator++(), juce::EnumerateIterator< Iter, Index >::operator+=(), juce::EnumerateIterator< Iter, Index >::operator-(), juce::EnumerateIterator< Iter, Index >::operator--(), juce::EnumerateIterator< Iter, Index >::operator-=(), juce::EnumerateIterator< Iter, Index >::operator<(), juce::EnumerateIterator< Iter, Index >::operator<=(), juce::EnumerateIterator< Iter, Index >::operator==(), juce::EnumerateIterator< Iter, Index >::operator>(), and juce::EnumerateIterator< Iter, Index >::operator>=().