我们可以期望这样的复合语句/块作用域吗?
void foo(){
{ //<---
//...
} //<---
//...
}
和这样的未命名lambdas
void foo(){
[&]{ //<---
//...
}(); //<---
//...
}
当优化考虑函数调用堆栈大小时,总是产生相同的代码吗?如果没有,哪个是首选?
我问的原因是,当优化处于关闭状态时,复合语句中所需的堆栈大小将无法收回,请参见https://wandbox.org/permlink/PaychPU21SPnwDBU(对于clang请参见https://wandbox.org/permlink/eSPwma7dboBHAXmh)。
编辑
让我改一下。与第一个相比,第二个是否保证回收在lambda内部使用的堆栈大小?