C ++ lambda无法转换为int

c++ lambda can't convert to int

我尝试按如下方式使用嵌套 lambda:

int main() {
    auto x=[](int a){
        return [a](int b){
            return a+b;
        };
    };

    int xx = x(1)(2);
    
    (void)xx;
    return 0;
}

但是vs2013编译报错(C++11语言级别):

[...] can't convert to int.

怎么了?

您的代码片段格式正确,这是 VS2013 中使用的 MSVC C++ 编译器版本中的编译器限制或错误。请注意,VS2013 仅声称部分 C++11 支持,例如What's New for Visual C++ in Visual Studio 2013:

Improved ISO C/C++ Standards Support

Compiler

Supports these ISO C++11 language features:

  • [...]