1#ifndef DUNE_FEM_COMMON_TYPEINDEXEDTUPLE_HH
2#define DUNE_FEM_COMMON_TYPEINDEXEDTUPLE_HH
6#include <dune/common/tupleutility.hh>
18 template<
class Tuple,
class Types >
24 static const int value = Dune::FirstTypeIndex< Types, T >::value;
28 template<
class T,
bool contained >
31 typedef typename std::tuple_element< Position< T >::value, Tuple >::type Type;
32 static Type&
at( Tuple& tuple )
34 return std::get< Position< T >::value >( tuple );
36 static const Type&
at(
const Tuple& tuple )
38 return std::get< Position< T >::value >( tuple );
44 struct ValueBase< T, false >
47 static Type&
at( Tuple& tuple )
51 static const Type&
at(
const Tuple& tuple )
65 struct Value :
public ValueBase< T, Contains< T >::value >
75 typename Value< T >::Type &
at ()
82 const typename Value< T >::Type &
at ()
const
96 const typename Value< T >::Type &
operator[] (
const T & )
const
106 operator Tuple & () {
return tuple_; }
109 operator const Tuple & ()
const {
return tuple_; }
120 template<
int i,
class Tuple,
class Types >
121 typename std::tuple_element< i, Tuple >::type &
124 return std::get< i >(
static_cast< Tuple &
>( tuple ) );
127 template<
int i,
class Tuple,
class Types >
128 const typename std::tuple_element< i, Tuple >::type &
131 return std::get< i >(
static_cast< const Tuple &
>( tuple ) );
141 template<
size_t i,
class Tuple,
class Types >
142 class tuple_element< i,
Dune::TypeIndexedTuple< Tuple, Types > >
145 typedef typename std::tuple_element< i, Tuple >::type
type;
Definition: bindguard.hh:11
std::tuple_element< i, Tuple >::type & get(Dune::TypeIndexedTuple< Tuple, Types > &tuple)
Definition: typeindexedtuple.hh:122
Definition: tupleutility.hh:160
Definition: typeindexedtuple.hh:20
Value< T >::Type & at()
return reference to tuple member associated with type T
Definition: typeindexedtuple.hh:75
const Value< T >::Type & at() const
return reference to tuple member associated with type T
Definition: typeindexedtuple.hh:82
TypeIndexedTuple(const Tuple &tuple=Tuple())
Definition: typeindexedtuple.hh:69
bool active(const T &) const
return true if type T is contained in the tuple
Definition: typeindexedtuple.hh:103
Value< T >::Type & operator[](const T &)
return reference to tuple member associated with type T (integral_constant)
Definition: typeindexedtuple.hh:89
Definition: typeindexedtuple.hh:60
static const bool value
Definition: typeindexedtuple.hh:61
Definition: typeindexedtuple.hh:66
std::tuple_element< i, Tuple >::type type
Definition: typeindexedtuple.hh:145