Cree un tipo de función std :: con argumentos limitados
Dado el tipo de función invocableC
, Quiero obtener en tiempo de compilación unstd::function
; el tipo de los cuales:
C
los tipos de argumentos son los primerosN
tipos de argumento de funciónC
Esto significa que, para un tipo dadovoid(int, char, double)
y un hechoN
, el tipo de la función es:
N = 1
=> tipo de resultado:std::function<void(int)>
N = 2
=> tipo de resultado:std::function<void(int, char)>
N = 3
=> tipo de resultado:std::function<void(int, char, double)>
N > 3
=> error de tiempo de compilaciónEjemplo:
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...>());
};