dune-common 2.9.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | List of all members
Dune::StaticIntegralRange< T, to, from > Class Template Reference

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 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
 

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
Ttype of integers contained in the range
tofirst element not contained in the range
fromfirst 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>
constexpr Dune::StaticIntegralRange< T, to, from >::StaticIntegralRange ( )
constexprdefaultnoexcept

default constructor

Member Function Documentation

◆ begin()

template<class T , T to, T from = 0>
static constexpr iterator Dune::StaticIntegralRange< T, to, from >::begin ( )
inlinestaticconstexprnoexcept

obtain a random-access iterator to the first element

◆ empty()

template<class T , T to, T from = 0>
static constexpr std::integral_constant< bool, from==to > Dune::StaticIntegralRange< T, to, from >::empty ( )
inlinestaticconstexprnoexcept

check whether the range is empty

◆ end()

template<class T , T to, T from = 0>
static constexpr iterator Dune::StaticIntegralRange< T, to, from >::end ( )
inlinestaticconstexprnoexcept

obtain a random-access iterator past the last element

◆ operator integer_sequence()

template<class T , T to, T from = 0>
constexpr Dune::StaticIntegralRange< T, to, from >::operator integer_sequence ( ) const
inlineconstexprnoexcept

cast into corresponding std::integer_sequence

◆ operator IntegralRange< T >()

template<class T , T to, T from = 0>
constexpr Dune::StaticIntegralRange< T, to, from >::operator IntegralRange< T > ( ) const
inlineconstexprnoexcept

cast into dynamic IntegralRange

◆ operator[]() [1/2]

template<class T , T to, T from = 0>
constexpr value_type Dune::StaticIntegralRange< T, to, from >::operator[] ( const size_type i) const
inlineconstexprnoexcept

access specified element (dynamic version)

◆ operator[]() [2/2]

template<class T , T to, T from = 0>
template<class U , U i>
constexpr 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)>
inlineconstexprnoexcept

access specified element (static version)

◆ size()

template<class T , T to, T from = 0>
static constexpr std::integral_constant< size_type, static_cast< size_type >(to) - static_cast< size_type >(from) > Dune::StaticIntegralRange< T, to, from >::size ( )
inlinestaticconstexprnoexcept

obtain number of elements in the range


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