嵌套的lambda语法和调用?

易爆

我不知道如何命名标题,希望它是正确的...

我偶然发现下面的lambda定义,并且不了解语法,而var = [=]and是return [=]什么意思

还有ConstexprLambda()下面函数中的第二个问题,为什么我们不能必须调用add(1, 2)而不是add(1, 2)()为什么()在调用identity(123)代码时不需要使用额外的附加值()呢?

问题被放入代码注释中。

auto identity = [](int n) constexpr
{
    return n;
};

constexpr auto add = [](int x, int y)
{
    auto L = [=] // what is = [=]?
    {
        return x;
    };
    auto R = [=]
    {
        return y;
    };
    return [=] // what return [=] means here?
    {
        return L() + R();
    };
};

void ConstexprLambda()
{
    static_assert(identity(123) == 123);
    static_assert(add(1, 2)() == 3); // why can't we just add(1,2) like above?
}

该示例取自此处

遗忘

类型

让我们从类型开始

auto identity = [](int n) constexpr
{
    return n;
};

identity是一个存储type可调用对象包装器lambda(int)您也可以使用std :: function:

std::function<int(int)> identity;

因此,identity在调用它时int返回an int

add另一方面,在调用时,取两个ints并返回一个callable。

extra()运算符

您需要调用,add(1, 2)因为的返回类型add是可调用的,否则add(1, 2)() == 3由于类型不匹配而无法进行比较。

查看活在螺栓上的类型

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

scss嵌套卡在语法和嵌套中

来自分类Dev

缩进lambda和嵌套动作

来自分类Dev

轻量级语法和嵌套记录

来自分类Dev

轻量级语法和嵌套记录

来自分类Dev

基本SASS-嵌套和HTML语法

来自分类Dev

在AWS Lambda中调用嵌套函数

来自分类Dev

如何在剃刀语法中组合嵌套模型 lambda

来自分类Dev

Javascript语法-If语句和函数调用

来自分类Dev

嵌套lambda和可变关键字

来自分类Dev

使用委托调用Lambda表达式的语法

来自分类Dev

Haskell嵌套了where子句和“ let ... in”语法

来自分类Dev

bash嵌套的大小写语法和;; 终结者

来自分类Dev

AMPL 优化函数中嵌套乘积和总和的语法

来自分类Dev

捕获嵌套lambda中的通用可调用对象-始终向前?

来自分类Dev

Join with Where子句的查询和方法(lambda)语法的等效项

来自分类Dev

MSVC和GCC之间的Lambda语法不兼容

来自分类Dev

C# Lambda 表达式和@item 语法

来自分类Dev

AWS Lambda和SNS:跨区域调用Lambda

来自分类Dev

统一调用语法和功能指针

来自分类Dev

在SAS中调用帮助以引用函数的语法和参数

来自分类Dev

指针声明和函数调用中的奇数C语法

来自分类Dev

Python对调用func和语法有疑问

来自分类Dev

在SAS中调用帮助以引用函数的语法和参数

来自分类Dev

如何计算Lambda表达式和匿名方法的嵌套?

来自分类Dev

如何使用LINQ或Lambda代替嵌套和多个foreach语句

来自分类Dev

使用“lambda”和“字典理解”对嵌套字典执行代数运算?

来自分类Dev

SAS嵌套循环语法

来自分类Dev

Coldfusion:API调用数组和结构上的嵌套循环

来自分类Dev

Ruby嵌套分配和无括号方法调用