user2377019
问问题
1424 次
2 回答
9
您似乎对函数的结果和函数本身感到困惑。在这条线上
auto result = [&val1, &val2](){return (val1 + val2);};
您正在创建一个 lambda 函数(在 的右侧=
),并将其分配给一个名为result
. 这里auto
是保存 lambda 函数的变量的类型,而不是 lambda 函数的返回类型。
如果你想让返回类型明确,可以这样做:
auto result = [&val1, &val2]() -> int {return (val1 + val2);};
如果你想让类型result
更明确,你可以使用std::function
:
std::function<int()> result = [&val1, &val2]() {return (val1 + val2);};
另外,由于result
是一个函数,你可以这样使用result
:
std::cout << result() << "\n";
于 2013-06-04T13:01:59.830 回答
3
在您的示例中,result
是一个函数(请注意,您不执行匿名函数)。在行
std::cout << "Result: " << [&val1, &val2](){return (val1 + val2) ;} << '\n';
您正在尝试输出一个函数,而不是应用该函数的结果。将其更改为
std::cout << "Result: " << [&val1, &val2](){return (val1 + val2) ;}() << '\n';
它打印出 和 的val1
总和val2
。
于 2013-06-04T13:03:01.543 回答