试图理解什么是“ int any = [](){//代码体}();”手段

时间:2018-12-27 00:20:05

标签: c++

我试图理解此声明的含义。它是函数还是变量声明?当我尝试用c或c ++进行编译时,它不会编译。但是,我发现此代码是针对我要解决的问题的优化解决方案的一部分,这就是为什么我要弄清楚它的原因。

int any = []() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    return 0;
}();

1 个答案:

答案 0 :(得分:6)

它是立即调用的lambda expression

[]是一个空的捕获列表;

()是一个空参数列表;

{...}是一个lambda主体,应返回可转换为int的内容,因为它需要分配给any

以上所有内容都定义了一个lambda。

()是对该Lambda的(函数)调用,参数列表为空。

Lambda表达式自C ++ 11起可用,因此也许您的编译器使用的是过时的标准。