Создайте тип std :: function с ограниченными аргументами

Учитывая тип вызываемой функцииCЯ хочу получить во время компиляцииstd::function; тип которого:

имеет тот же тип возврата функцииCтипы аргументов являются первымиN Тип аргумента функцииC

Это означает, что для данного типаvoid(int, char, double) и данныйNтип функции:

N = 1&nbsp;=> тип результата:std::function<void(int)>N = 2&nbsp;=> тип результата:std::function<void(int, char)>N = 3&nbsp;=> тип результата:std::function<void(int, char, double)>N > 3&nbsp;=> Ошибка времени компиляции

Пример:

template<std::size_t N, typename R, typename... A>
constexpr auto get() {
    return /*(magically somehow)*/ std::function<R(FirstNFromA...)>
}

template<std::size_t N, typename R, typename... A>
struct S {
    using func = decltype(get<N, R, A...>());
};