216 using namespace boost::mp11;
218 using FunctionPlain = std::decay_t<Function>;
219 using FlattenedTuple =
221 using FlattenedTupleOfPlainTypes =
222 mp_transform<std::remove_cvref_t, FlattenedTuple>;
225 boost::mp11::mp_is_set<FlattenedTupleOfPlainTypes>::value,
226 "The types of all elements of all passed tuples must be unique.");
228 using FunctionArgumentTypesPlain =
232 boost::mp11::mp_is_set<FunctionArgumentTypesPlain>::value,
233 "The argument types of the function to be called must be unique.");
236 std::forward<Function>(f),
237 std::forward<Args>(args)...);