c++ - 通过 lambda 捕获列表中的常量引用传递

标签 c++ c++11 lambda

我正在构建一个需要访问上下文中大量变量的 lambda 函数。

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

我不想在列表中使用 [=],因为我不希望制作大量的值(value)拷贝。

如果我使用 [&],我会担心程序稳定性,因为我不希望 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 捕获列表中的常量引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31179355/

相关文章:

linux - GCC 将 uint8_t 和 uint16_t 解释为已签名?

c++ - std::function、std::bind 和 std::ref 的 Clang 错误?

c++ - 处理容器中的 unique_ptr

java - Java中的Lambda表达式机制

c++ - 如何告诉 C++ 正则表达式被视为纯文本/转义所有字符

c++ - 从 Visual Studio C++ 项目中提取有用的文件列表(带路径)

c# - 表达式/函数重载的编译器错误

c++ - 将 lambda 推导为 std::function<T>

c++ - std::unordered_map 如何处理冲突?

c++ - 如何有效地从 C++ 中的集合中删除开始和结束元素?