Erstelle einen std :: -Funktionstyp mit eingeschränkten Argumenten
Gegeben den Typ einer aufrufbaren FunktionC
, Ich möchte zur Kompilierzeit ein @ bekommstd::function
; deren Art:
C
die Argumenttypen sind die erstenN
Argument FunktionsartenC
Dies bedeutet, dass für einen bestimmten Typvoid(int, char, double)
und ein gegebenesN
, die Art der Funktion ist:
N = 1
=> Ergebnistyp:std::function<void(int)>
N = 2
=> Ergebnistyp:std::function<void(int, char)>
N = 3
=> Ergebnistyp:std::function<void(int, char, double)>
N > 3
=> KompilierzeitfehlerBeispiel
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...>());
};