10#include <ext/typeinfo>
19template <
class ... ParamTypes,
class F,
class Tuple, std::size_t... I >
20constexpr decltype ( auto )
apply_impl ( F && f, Tuple && t, std::index_sequence < I ... > ) {
21 return std::invoke ( std::forward < F > ( f ), abstraction::retrieveValue < ParamTypes > ( std::get < I > ( std::forward < Tuple > ( t ) ) ) ... );
26template <
class ... ParamTypes,
class F,
class Tuple >
27constexpr decltype ( auto )
apply ( F && f, Tuple && t ) {
28 return detail::apply_impl < ParamTypes ... > ( std::forward < F > ( f ), std::forward < Tuple > ( t ), std::make_index_sequence <
sizeof ... ( ParamTypes ) > { } );
31template <
class ... Params >
35 auto lambda = [ & ] (
auto I ) {
36 res =
ext::type_index (
typeid ( std::tuple_element_t <
decltype ( I )::value, std::tuple < Params ... > > ) );
44template <
class ... Params >
48 auto lambda = [ & ] (
auto I ) {
TypeQualifierSet
Definition: TypeQualifiers.hpp:15
static constexpr TypeQualifierSet typeQualifiers()
Definition: TypeQualifiers.hpp:52
Definition: typeindex.h:37
constexpr decltype(auto) apply_impl(F &&f, Tuple &&t, std::index_sequence< I ... >)
Definition: AbstractionHelpers.hpp:20
Definition: AlgorithmAbstraction.hpp:11
constexpr decltype(auto) apply(F &&f, Tuple &&t)
Definition: AbstractionHelpers.hpp:27
abstraction::TypeQualifiers::TypeQualifierSet paramTypeQualifiers(unsigned index)
Definition: AbstractionHelpers.hpp:45
return res
Definition: MinimizeByPartitioning.h:145
void constexpr_switch(const std::size_t i, F &&f)
Definition: utility.hpp:65