我试图理解此声明的含义。它是函数还是变量声明?当我尝试用c或c ++进行编译时,它不会编译。但是,我发现此代码是针对我要解决的问题的优化解决方案的一部分,这就是为什么我要弄清楚它的原因。
int any = []() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
return 0;
}();
答案 0 :(得分:6)
它是立即调用的lambda expression:
[]
是一个空的捕获列表;
()
是一个空参数列表;
{...}
是一个lambda主体,应返回可转换为int
的内容,因为它需要分配给any
。
以上所有内容都定义了一个lambda。
()
是对该Lambda的(函数)调用,参数列表为空。
Lambda表达式自C ++ 11起可用,因此也许您的编译器使用的是过时的标准。