c – 在lambda捕获列表中通过常量引用

我正在构建一个lambda函数,需要在上下文中访问相当多的变量.

const double defaultAmount = [&]{
    /*ToDo*/
}();

我不想在列表中使用[=],因为我不想要大量的价值副本.

如果我使用[&],我担心程序的稳定性,因为我不希望lambda修改捕捉集.

可以通过const引用传递吗? [const&]不起作用.

也许一个好的编译器优化了值拷贝,所以[=]是可取的.

最佳答案
您可以明确创建和捕获const引用:

int x = 42;
const int& rx = x;
auto l = [&rx]() {
    x = 5; // error: 'x' is not captured
    rx = 5; // error: assignment of read-only reference 'rx'
};

转载注明原文:c – 在lambda捕获列表中通过常量引用 - 代码日志