Следующий код пытается создать шаблон лямбда-выражения и передать его вызывающей его функции. Однако компиляция завершается неудачей, поскольку тип аргумента лямбда неправильный.
#include
void foo(std::function&lambda) {
lambda.template operator()();
}
int main() {
auto f = []() {};
foo(f);
}
Как определить тип аргумента, который получает шаблонную лямбду?
Использование auto работает, но мне нужен явный тип (чтобы я мог изменить foo, чтобы он возвращал все, что возвращает лямбда).
void foo(auto &lambda) { // Works but not what I want
Я пробовал, но не компилируется:
template
void foo(std::function&lambda) {
Подробнее здесь: https://stackoverflow.com/questions/787 ... ted-lambda