Dune Core Modules (2.4.2)

Dune::ForEachValue< TupleType > Class Template Reference

Helper template which implements iteration over all storage elements in a tuple. More...

#include <dune/common/tupleutility.hh>

Public Member Functions

 ForEachValue (TupleType &tuple)
 Constructor. More...
 
template<class Functor >
void apply (Functor &f) const
 Applies a function object to each storage element of the tuple. More...
 

Detailed Description

template<class TupleType>
class Dune::ForEachValue< TupleType >

Helper template which implements iteration over all storage elements in a tuple.

Compile-time constructs that allows one to process all elements in a tuple. The exact operation performed on an element is defined by a function object, which needs to implement a visit method which is applicable to all storage elements of a tuple. Each tuple element is visited once, and the iteration is done in ascending order.

The following example implements a function object which counts the elements in a tuple

template <class T>
struct Counter {
Counter() : result_(0) {}
template <class T>
void visit(T& elem) { ++result_; }
int result_;
};

The number of elements in the tuple are stored in the member variable result_. The Counter can be used as follows, assuming a tuple t of type MyTuple is given:

Counter c;
ForEachValue<MyTuple> forEach(t);
forEach.apply(c);
std::cout << "Number of elements is: " << c.result_ << std::endl;

Constructor & Destructor Documentation

◆ ForEachValue()

template<class TupleType >
Dune::ForEachValue< TupleType >::ForEachValue ( TupleType &  tuple)
inline

Constructor.

Parameters
tupleThe tuple which we want to process.

Member Function Documentation

◆ apply()

template<class TupleType >
template<class Functor >
void Dune::ForEachValue< TupleType >::apply ( Functor &  f) const
inline

Applies a function object to each storage element of the tuple.

Parameters
fFunction object.

The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (May 1, 22:29, 2024)