C++:从外部更改在 lambda 中捕获的变量

标签 c++ lambda c++17

有什么方法可以从外部更改 lambda 中通过复制捕获的变量吗?

例子:

#include <iostream>

int main() {
    int x = 3;
    auto f = [x]() { std::cout << x << std::endl; };
    // is there anything I can do here to make f print 4?
    f();
}

如果可以的话,感觉真的很脏。有什么令人信服的理由让我什至不应该考虑这样做吗?

最佳答案

#include <iostream>

int main()
{
    int x = 3;
    auto f = [&x]() { std::cout << x << std::endl; };
    x++;
    f();
}

关于C++:从外部更改在 lambda 中捕获的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41005843/

相关文章:

java - 在 return 语句中找不到适合 ArrayList<String> .toArray(String[]::new) 的方法

java - 我可以使用 lambda 重写 JDK8 中功能接口(interface)的 toString 方法吗

c++ - std::is_class在引用类上为false

c++ - 如何避免在 C++11 中触发这种复制构造函数?

C++ 项目依赖项无法在特定的 macOS 机器上编译

c++ - 将 std::string 转换为 boost::posix_time::ptime

c++ - 将任何 lambda 函数(包括捕获 lambda)转换为 std::function 对象的模板

c++ - 类模板参数推导失败导致替换失败

c++ - 按引用传递(指向对象的指针的 vector )比按值传递更快吗?

c++ - 使用 Win32/WINAPI 通过内存映射文件传输数据