Geant4-11
Data Structures | Typedefs | Functions
PTL::mpl::impl Namespace Reference

Data Structures

struct  Build_index_tuple
 
struct  Build_index_tuple< 0 >
 
struct  Build_index_tuple< 1 >
 
struct  Index_tuple
 
struct  integer_sequence
 Class template integer_sequence. More...
 
struct  Itup_cat
 
struct  Itup_cat< Index_tuple< Ind1... >, Index_tuple< Ind2... > >
 
struct  Make_integer_sequence
 
struct  Make_integer_sequence< Tp, NumT, Index_tuple< Idx... > >
 

Typedefs

template<size_t... Idx>
using index_sequence = integer_sequence< size_t, Idx... >
 Alias template index_sequence. More...
 
template<typename... Types>
using index_sequence_for = make_index_sequence< sizeof...(Types)>
 Alias template index_sequence_for. More...
 
template<size_t Idx, typename Tup >
using index_type_t = decay_t< decltype(std::get< Idx >(std::declval< Tup >()))>
 
template<size_t NumT>
using make_index_sequence = make_integer_sequence< size_t, NumT >
 Alias template make_index_sequence. More...
 
template<typename Tp , Tp NumT>
using make_integer_sequence = typename Make_integer_sequence< Tp, NumT >::__type
 Alias template make_integer_sequence. More...
 

Functions

template<typename FnT , typename TupleT , size_t... Idx>
static auto apply (FnT &&_func, TupleT _args, impl::index_sequence< Idx... >) -> decltype(std::forward< FnT >(_func)(std::get< Idx >(std::move(_args))...))
 

Typedef Documentation

◆ index_sequence

template<size_t... Idx>
using PTL::mpl::impl::index_sequence = typedef integer_sequence<size_t, Idx...>

Alias template index_sequence.

Definition at line 148 of file Globals.hh.

◆ index_sequence_for

template<typename... Types>
using PTL::mpl::impl::index_sequence_for = typedef make_index_sequence<sizeof...(Types)>

Alias template index_sequence_for.

Definition at line 156 of file Globals.hh.

◆ index_type_t

template<size_t Idx, typename Tup >
using PTL::mpl::impl::index_type_t = typedef decay_t<decltype(std::get<Idx>(std::declval<Tup>()))>

Definition at line 159 of file Globals.hh.

◆ make_index_sequence

template<size_t NumT>
using PTL::mpl::impl::make_index_sequence = typedef make_integer_sequence<size_t, NumT>

Alias template make_index_sequence.

Definition at line 152 of file Globals.hh.

◆ make_integer_sequence

template<typename Tp , Tp NumT>
using PTL::mpl::impl::make_integer_sequence = typedef typename Make_integer_sequence<Tp, NumT>::__type

Alias template make_integer_sequence.

Definition at line 144 of file Globals.hh.

Function Documentation

◆ apply()

template<typename FnT , typename TupleT , size_t... Idx>
static auto PTL::mpl::impl::apply ( FnT &&  _func,
TupleT  _args,
impl::index_sequence< Idx... >   
) -> decltype(std::forward<FnT>(_func)(std::get<Idx>(std::move(_args))...))
inlinestatic

Definition at line 163 of file Globals.hh.

165{
166 // GCC 5.3 warns about unused variable _args when the index sequence is empty
167#if defined(__GNUC__) && (__GNUC__ < 6)
168 if(sizeof...(Idx) == 0)
169 {
170 consume_parameters(_args);
171 }
172#endif
173 return std::forward<FnT>(_func)(std::get<Idx>(std::move(_args))...);
174}
void consume_parameters(Args &&...)
Definition: Globals.hh:80

References PTL::mpl::consume_parameters().

Referenced by PTL::mpl::apply().