小编Sef*_*efa的帖子

C++中的lambda返回类型

具有函数体的Lambda,该函数体包含除了未指定返回类型的单个return语句之外的任何内容,返回void.

通过"C++ Primer"第5版,第389页.

但是,如果我们使用if语句编写看似等效的程序,我们的代码将无法编译:

//error: can't deduce the return type for the lambda.

transform(vi.begin(), vi.end(), vi.begin(), [](int i) { if(i < 0) return -i; else return i; } );
Run Code Online (Sandbox Code Playgroud)

通过"C++ Primer"第5版,第396页.

我在Visual Studio中编写了一个程序:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main(void) {
    vector<int> vi{ 1, -2, 3, -4, 5, -6 };
    /* Is the return type void? */
    transform(vi.begin(), vi.end(), vi.begin(), [](int i) {
                                                    if (i < 0) return -i;
                                                    else return i; });

    for (int i …
Run Code Online (Sandbox Code Playgroud)

c++ lambda

6
推荐指数
1
解决办法
841
查看次数

标签 统计

c++ ×1

lambda ×1