12 template <
bool IsConst>
18 using value_type = std::pair<const atomic::Species, double>;
23 using AbundRef = std::conditional_t<IsConst, const double&, double&>;
34 using SpecIt = std::vector<atomic::Species>::const_iterator;
35 using AbunIt = std::conditional_t<IsConst,
36 std::vector<double>::const_iterator,
37 std::vector<double>::iterator>;
46 template <
bool WasConst,
typename = std::enable_if_t<IsConst && !WasConst>>
58 return ArrowProxy{ **
this };
CompositionIterator & operator++()
AbunIt getAbundanceIt() const
CompositionIterator & operator-=(difference_type n)
CompositionIterator & operator+=(difference_type n)
SpecIt getSpeciesIt() const
bool operator!=(const CompositionIterator< R > &other) const
std::conditional_t< IsConst, std::vector< double >::const_iterator, std::vector< double >::iterator > AbunIt
bool operator>=(const CompositionIterator< R > &other) const
friend CompositionIterator operator+(CompositionIterator it, difference_type n)
bool operator<(const CompositionIterator< R > &other) const
CompositionIterator()=default
std::ptrdiff_t difference_type
std::pair< const atomic::Species, double > value_type
CompositionIterator operator++(int)
reference operator[](difference_type n) const
reference operator*() const
bool operator>(const CompositionIterator< R > &other) const
friend difference_type operator-(const CompositionIterator &lhs, const CompositionIterator &rhs)
bool operator<=(const CompositionIterator< R > &other) const
CompositionIterator operator--(int)
const atomic::Species & SpeciesRef
std::pair< SpeciesRef, AbundRef > reference
bool operator==(const CompositionIterator< R > &other) const
CompositionIterator & operator--()
CompositionIterator(SpecIt sIt, AbunIt aIt)
CompositionIterator(const CompositionIterator< WasConst > &other)
std::random_access_iterator_tag iterator_category
friend CompositionIterator operator+(difference_type n, CompositionIterator it)
ArrowProxy operator->() const
friend CompositionIterator operator-(CompositionIterator it, difference_type n)
std::vector< atomic::Species >::const_iterator SpecIt
std::conditional_t< IsConst, const double &, double & > AbundRef
Represents an atomic species (isotope) with its fundamental physical properties.
const reference * operator->() const