lambda 表达式也是一种可调用对象,那么可调用对象有哪些呢?
有函数,函数指针,重载了调用运算符的类,还有lambda表达式。
1个lambda表达式表示一个可调用的代码单元,我们可以先理解为一个未命名的内联函数。
和认识函数一样,lambda 有返回值,参数列表,函数体。如下形式
[捕获列表](参数1,参数2,...)->返回值 { 函数体}
lambda 表达式可以定义在函数内部,lambda 必须使用尾置返回来制定返回类型
void test()
{
auto func = [](){return 1}; 就是一个lambda 表达式
func();
}
一个lambda 必须包含捕获列表和函数体,可以没有参数列表和返回类型
auto func= []{return 1;};