Parametertypen eines Lambdas erhalten
-
Komme ich irgendwie an die Parameter eines Lambdas? Beziehungsweise welche Typen diese haben?
pseudo:
template <typename LambdaT> void infer(LambdaT lam) { get_first_parameter_type<LambdaT>::type myVar; // int myVar } infer([](int a){});
Ich brauche das auch nicht für eine beliebige Anzahl Parameter.
-
Beziehungsweise liege ich richtig in der Annahme, dass das unmöglich ist.
-
template<typename F, typename Ret, typename A, typename... Rest> A helper(Ret(F::*)(A, Rest...)); template<typename F, typename Ret, typename A, typename... Rest> A helper(Ret(F::*)(A, Rest...) const); template<typename F> struct first_argument { typedef decltype(helper(&F::operator())) type; }; template <typename LambdaT> void infer(LambdaT lam) { typename first_argument<LambdaT>::type myVar; } int main() { infer([](int foo) {}); }
-
Wenn ich gewusst hätte dass das hier geht...
F::operator()
für lambdas.