复合语句与未命名的Lambda

时间:2019-12-06 21:21:36

标签: c++

我们可以期望这样的复合语句/块作用域吗?

void foo(){
  {        //<---
    //...
  }        //<---
  //...
}

和这样的未命名lambdas

void foo(){
  [&]{        //<---
    //...
  }();        //<---
  //...
}
当优化考虑函数调用堆栈大小时,

总是产生相同的代码吗?如果没有,哪个是首选?

我问的原因是,当优化处于关闭状态时,复合语句中所需的堆栈大小将无法收回,请参见https://wandbox.org/permlink/PaychPU21SPnwDBU(对于clang请参见https://wandbox.org/permlink/eSPwma7dboBHAXmh)。


编辑

让我改一下。与第一个相比,第二个是否保证回收在lambda内部使用的堆栈大小?

0 个答案:

没有答案