18template <
typename Function>
 
   27template <
typename Result, 
typename Class, 
typename... Args>
 
   30    using type = boost::mp11::mp_list<Args...>;
 
 
   34template <
typename Result, 
typename Class, 
typename... Args>
 
   37    using type = boost::mp11::mp_list<Args...>;
 
 
   41template <
typename Result, 
typename... Args>
 
   44    using type = boost::mp11::mp_list<Args...>;
 
 
   48template <
typename Function>
 
   50    std::type_identity<boost::mp11::mp_transform<
 
   54template <
typename Function>
 
   63template <
typename Result, 
typename Class, 
typename... Args>
 
   70template <
typename Result, 
typename Class, 
typename... Args>
 
   77template <
typename Result, 
typename... Args>
 
   88template <
typename Object,
 
   90          typename... MemberFunctionArgumentTypesPlain>
 
   96        decltype(&std::decay_t<Object>::operator())>::type
 
 
  103template <
typename Result,
 
  107          typename... MemberFunctionArgumentTypesPlain>
 
  109    boost::mp11::mp_list<MemberFunctionArgumentTypesPlain...>,
 
  110    Result (Object::*m)(Args...),
 
 
  119template <
typename Result,
 
  123          typename... MemberFunctionArgumentTypesPlain>
 
  125    boost::mp11::mp_list<MemberFunctionArgumentTypesPlain...>,
 
  126    Result (Object::*m)(Args...),
 
 
  135template <
typename Result,
 
  139          typename... MemberFunctionArgumentTypesPlain>
 
  141    boost::mp11::mp_list<MemberFunctionArgumentTypesPlain...>,
 
  142    Result (Object::*m)(Args...) const,
 
 
  151template <
typename Result,
 
  154          typename... FunctionArgumentTypesPlain>
 
  156                       Result (*fct)(Args...),
 
 
  162template <
typename Function, 
typename... PassedArgsTuples>
 
  173template <
typename Result,
 
  175          typename... DeclaredArgs,
 
  177          typename... PassedArgsTuples>
 
  185        std::remove_cvref_t<PassedArgsTuples>...>::type;
 
 
  189template <
typename Result,
 
  191          typename... DeclaredArgs,
 
  192          typename... ClassAndPassedArgsTuples>
 
  194                                     ClassAndPassedArgsTuples...>
 
  197                                    ClassAndPassedArgsTuples...>
 
 
  202template <
typename Result, 
typename... DeclaredArgs, 
typename... Tuples>
 
  206        std::remove_cvref_t<Tuples>...>::type;
 
 
  219template <
typename Function, 
typename... Args>
 
  225    using FunctionPlain = std::decay_t<Function>;
 
  226    using FlattenedTuple =
 
  228    using FlattenedTupleOfPlainTypes =
 
  229        mp_transform<std::remove_cvref_t, FlattenedTuple>;
 
  232        mp_is_set_v<FlattenedTupleOfPlainTypes>,
 
  233        "The types of all elements of all passed tuples must be unique.");
 
  235    using FunctionArgumentTypesPlain =
 
  239        mp_is_set_v<FunctionArgumentTypesPlain>,
 
  240        "The argument types of the function to be called must be unique.");
 
  243                           std::forward<Function>(f),
 
  244                           std::forward<Args>(args)...);
 
 
 
  256template <
typename Function, 
typename... Tuples>
 
  257auto apply(Function& f, Tuples&... ts) ->
 
  260    static_assert(boost::mp11::mp_similar<std::tuple<>,
 
  261                                          std::remove_cv_t<Tuples>...>::value,
 
  262                  "In the argument ts... there must be only std::tuple's.");
 
 
  273template <
typename Function, 
typename... Tuples>
 
  274auto eval(Function& f, Tuples&... ts) ->
 
  277    static_assert(boost::mp11::mp_similar<std::tuple<>,
 
  278                                          std::remove_cv_t<Tuples>...>::value,
 
  279                  "In the argument ts... there must be only std::tuple's.");
 
 
  293template <
typename Functions, 
typename... Tuples>
 
  296    boost::mp11::tuple_for_each(fs, [&ts...](
auto& f) { eval(f, ts...); });
 
 
 
auto unpackAndInvoke(boost::mp11::mp_list< MemberFunctionArgumentTypesPlain... >, Object &&o, Tuples &... ts) -> typename GetFunctionReturnType< decltype(&std::decay_t< Object >::operator())>::type
 
auto applyImpl(Function &&f, Args &&... args) -> typename detail::GetFunctionReturnType< std::decay_t< Function > >::type
 
std::type_identity< boost::mp11::mp_transform< std::remove_cvref_t, typename GetFunctionArgumentTypes< Function >::type > > GetFunctionArgumentTypesPlain
 
auto apply(Function &f, Tuples &... ts) -> typename detail::GetFunctionReturnType< std::decay_t< Function > >::type
 
auto & get(Tuples &... ts)
 
void evalAllInOrder(Functions &fs, Tuples &... ts)
 
auto eval(Function &f, Tuples &... ts) -> typename detail::GetFunctionReturnType< decltype(&Function::eval)>::type
 
typename detail::GetFlattenedTupleTypes< std::remove_cvref_t< PassedArgsTuples >... >::type type
 
typename detail::GetFlattenedTupleTypes< std::remove_cvref_t< Tuples >... >::type type
 
boost::mp11::mp_list< Args... > type
 
boost::mp11::mp_list< Args... > type
 
boost::mp11::mp_list< Args... > type