这个代码块是什么意思[=,&i]()mutable {}()?

lzr*_*tan 5 c++ lambda

我正在进行c ++测试,下面有一个奇怪的代码块,我不明白.在这里,i是一个int并且codechar:

[=,&i]()mutable
{
  i++;
  code = 'b';
  std::cout << "i:" <<i<<"""code:"<<code <<cout::endl;
}();
Run Code Online (Sandbox Code Playgroud)

我不知道怎么解释这个; 它看起来不像典型的C++代码块.我在网上搜索了有关这方面的信息,但在这种代码风格上找不到任何其他信息.

这段代码是什么意思?

Lig*_*ica 7

这是一个lambda函数,这是 2011年语言中添加的一项功能.

  • =意味着从外部变量副本可用内.
  • &i手段的是,尽管以上,i特别是实际可用的参考.
  • mutable关键字允许code函数体内的将被修改的拷贝.
  • 尾声()在声明后立即"运行".

如上所述,我看不出使用lambda的任何特殊原因.看起来有人成功实现了他们的目标:迷惑你.

  • 我同意这段代码看起来不必要复杂.OP - 如果你担心自己是否应该能够理解你正在看的东西,那就不要 - 在实际的C++代码中很少出现那种代码. (4认同)