Lambda作为函数参数 [英] Lambda as function parameter

查看:159
本文介绍了Lambda作为函数参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在不使用 auto 或模板的情况下声明lambda变量或函数参数的符号是​​什么?有什么办法吗?或者编译器是否为编译器为程序员未知的每个lambda定义了一个唯一的类对象?如果是,为什么?不能只是作为某种函数指针传递?

What's the notation for declaring a lambda variable, or function parameter, without the use of auto or templates? Is there any way to do so? Or does the compiler define a unique class object for each lambda whose name is unknown to the programmer before compile time? If so, why? Can't they just be passed as some sort of function pointer? It would be a major disappointment if that were not possible.

推荐答案

Lambdas可能持有状态(如从周围环境捕获的引用) ;如果它们不存在,它们可以存储在函数指针中。如果他们这样做,他们必须存储为一个函数对象(因为没有在函数指针中保存状态)。

Lambdas may hold state (like captured references from the surrounding context); if they don't, they can be stored in a function pointer. If they do, they have to be stored as a function object (because there is no where to keep state in a function pointer).

// No state, can be a function pointer:
int (*func_pointer) (int) = [](int a) { return a; };

// One with state:
int b = 3;
std::function<int (int)> func_obj = [&](int a) { return a*b; };

这篇关于Lambda作为函数参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆