Как можно получить доступ к типам параметров лямбда-функции в c ++?Не работает следующее:
template <class T> struct capture_lambda {
};
template <class R, class T> struct capture_lambda<R(T)> {
static void exec() {
}
};
template <class T> void test(T t) {
capture_lambda<T>::exec();
}
int main() {
test([](int i)->int{ return 0; });
}
Выше не компилируется, потому что компилятор выбирает прототип шаблона вместо специализации.
Есть ли способ сделать выше?
То, чего я на самом деле пытаюсь достичь, это следующее: у меня есть список функций, и я хочу выбрать соответствующую функцию для вызова.Пример:
template <class T, class ...F> void exec(T t, F... f...) {
//select the appropriate function from 'F' to invoke, based on match with T.
}
Например, я хочу вызвать функцию, которая принимает 'int':
exec(1, [](char c){ printf("Error"); }, [](int i){ printf("Ok"); });