小编Zhe*_*eCi的帖子

通过std::function引用使用lambda,不能修改lambda中的值

lambda 通过std::function引用使用,但 lambda 中的值无法更改。我不知道为什么?我已经使用了参考资料,但仍然无法实现这一目标。

\n
#include <iostream>\n#include <functional>\n\nvoid myInvoke(const std::function<void()>& fn)\n{\n    fn();\n}\n\nint main()\n{\n    int i{ 0 };\n\n    // Increments and prints its local copy of @i.\n    auto count{ [i]() mutable {\n      std::cout << ++i << '\\n';\n    } };\n\n    myInvoke(count);\n    myInvoke(count);\n    myInvoke(count);\n\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

实际结果\xef\xbc\x9a

\n
1\n1\n1\n
Run Code Online (Sandbox Code Playgroud)\n

预期结果\xef\xbc\x9a

\n
1\n2\n3\n
Run Code Online (Sandbox Code Playgroud)\n

我去掉&符号后,运行结果并没有改变。我想这两者应该是有区别的,但是我不知道到底是什么!

\n

c++ lambda c++11 c++14 c++17

6
推荐指数
1
解决办法
404
查看次数

标签 统计

c++ ×1

c++11 ×1

c++14 ×1

c++17 ×1

lambda ×1