Helper template which implements iteration over all storage elements in a tuple. More...
#include <dune/common/utility.hh>
Public Member Functions | |
ForEachValue (TupleType &tuple) | |
Constructor. | |
template<class Functor > | |
void | apply (Functor &f) |
Applies a function object to each storage element of the tuple. |
Helper template which implements iteration over all storage elements in a tuple.
Compile-time constructs that allows 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.
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;
Dune::ForEachValue< TupleType >::ForEachValue | ( | TupleType & | tuple | ) | [inline] |
Constructor.
tuple | The tuple which we want to process. |
void Dune::ForEachValue< TupleType >::apply | ( | Functor & | f | ) | [inline] |
Applies a function object to each storage element of the tuple.
f | Function object. |