Loading...
Searching...
No Matches
Dune::StaticIntegralRange< T, to, from > Class Template Reference
Common » Utilities » Range Utilities

static integer range for use in range-based for loops More...

`#include <dune/common/rangeutilities.hh>`

## Public Types

typedef T | value_type
| type of integers contained in the range
typedef Impl::IntegralRangeIterator< T > | iterator
| type of iterator
typedef std::make_unsigned_t< T > | size_type
| unsigned integer type corresponding to value_type
typedef decltype(shift_integer_sequence< from >(std::make_integer_sequence< T, to-from >())) | integer_sequence
| type of corresponding std::integer_sequence

## Public Member Functions

constexpr | StaticIntegralRange () noexcept=default
| default constructor
constexpr | operator IntegralRange< T > () const noexcept
| cast into dynamic IntegralRange
constexpr | operator integer_sequence () const noexcept
| cast into corresponding std::integer_sequence
template<class U, U i>
constexpr auto | operator[] (const std::integral_constant< U, i > &) const noexcept -> std::integral_constant< value_type, from+static_cast< value_type >(i)>
| access specified element (static version)
constexpr value_type | operator[] (const size_type &i) const noexcept
| access specified element (dynamic version)

## Static Public Member Functions

static constexpr integer_sequence | to_integer_sequence () noexcept
| return corresponding std::integer_sequence
static constexpr iterator | begin () noexcept
| obtain a random-access iterator to the first element
static constexpr iterator | end () noexcept
| obtain a random-access iterator past the last element
static constexpr std::integral_constant< bool, from==to > | empty () noexcept
| check whether the range is empty
static constexpr std::integral_constant< size_type, static_cast< size_type >(to) - static_cast< size_type >(from) > | size () noexcept
| obtain number of elements in the range
static constexpr bool | contains (value_type index) noexcept
| check whether given index is within range [from, to)

## Detailed Description

template<class T, T to, T from = 0>
class Dune::StaticIntegralRange< T, to, from >

static integer range for use in range-based for loops

This is a compile-time static variant of the IntegralRange. Apart from returning all range information statically, it casts into the corresponding std::integer_sequence.

Note
  This range can also be used in Hybrid::forEach, resulting in a static for loop over the contained integers like a std::integer_sequence.

Template Parameters

  T | type of integers contained in the range
  to | first element not contained in the range
  from | first element contained in the range, defaults to 0

## Member Typedef Documentation

## integer_sequence

template<class T, T to, T from = 0>

typedef decltype(shift_integer_sequence<from>(std::make_integer_sequence<T, to-from>())) Dune::StaticIntegralRange< T, to, from >::integer_sequence

type of corresponding std::integer_sequence

## iterator

template<class T, T to, T from = 0>

typedef Impl::IntegralRangeIterator<T> Dune::StaticIntegralRange< T, to, from >::iterator

type of iterator

## size_type

template<class T, T to, T from = 0>

typedef std::make_unsigned_t<T> Dune::StaticIntegralRange< T, to, from >::size_type

unsigned integer type corresponding to value_type

## value_type

template<class T, T to, T from = 0>

typedef T Dune::StaticIntegralRange< T, to, from >::value_type

type of integers contained in the range

## Constructor & Destructor Documentation

## StaticIntegralRange()

template<class T, T to, T from = 0>

Dune::StaticIntegralRange< T, to, from >::StaticIntegralRange | ( |  | ) |

constexpr default noexcept

default constructor

## Member Function Documentation

## begin()

template<class T, T to, T from = 0>

constexpr iterator Dune::StaticIntegralRange< T, to, from >::begin | ( |  | ) |

inline static constexpr noexcept

obtain a random-access iterator to the first element

## contains()

template<class T, T to, T from = 0>

constexpr bool Dune::StaticIntegralRange< T, to, from >::contains | ( | value_type | index | ) |

inline static constexpr noexcept

check whether given index is within range [from, to)

## empty()

template<class T, T to, T from = 0>

constexpr std::integral_constant< bool, from==to > Dune::StaticIntegralRange< T, to, from >::empty | ( |  | ) |

inline static constexpr noexcept

check whether the range is empty

## end()

template<class T, T to, T from = 0>

constexpr iterator Dune::StaticIntegralRange< T, to, from >::end | ( |  | ) |

inline static constexpr noexcept

obtain a random-access iterator past the last element

## operator integer_sequence()

template<class T, T to, T from = 0>

Dune::StaticIntegralRange< T, to, from >::operator integer_sequence | ( |  | ) | const

inline constexpr noexcept

cast into corresponding std::integer_sequence

## operator IntegralRange< T >()

template<class T, T to, T from = 0>

Dune::StaticIntegralRange< T, to, from >::operator IntegralRange< T > | ( |  | ) | const

inline constexpr noexcept

cast into dynamic IntegralRange

## operator[]() [1/2]

template<class T, T to, T from = 0>

value_type Dune::StaticIntegralRange< T, to, from >::operator[] | ( | const size_type & | i | ) | const

inline constexpr noexcept

access specified element (dynamic version)

## operator[]() [2/2]

template<class T, T to, T from = 0>
template<class U, U i>

auto Dune::StaticIntegralRange< T, to, from >::operator[] | ( | const std::integral_constant< U, i > & |  | ) | const->std::integral_constant< value_type, from+static_cast< value_type >(i)>

inline constexpr noexcept

access specified element (static version)

## size()

template<class T, T to, T from = 0>

constexpr std::integral_constant< size_type, static_cast< size_type >(to) - static_cast< size_type >(from) > Dune::StaticIntegralRange< T, to, from >::size | ( |  | ) |

inline static constexpr noexcept

obtain number of elements in the range

## to_integer_sequence()

template<class T, T to, T from = 0>

constexpr integer_sequence Dune::StaticIntegralRange< T, to, from >::to_integer_sequence | ( |  | ) |

inline static constexpr noexcept

return corresponding std::integer_sequence

The documentation for this class was generated from the following file:

- rangeutilities.hh