lambda 通过std::function引用使用,但 lambda 中的值无法更改。我不知道为什么?我已经使用了参考资料,但仍然无法实现这一目标。
#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}\nRun Code Online (Sandbox Code Playgroud)\n实际结果\xef\xbc\x9a
\n1\n1\n1\nRun Code Online (Sandbox Code Playgroud)\n预期结果\xef\xbc\x9a
\n1\n2\n3\nRun Code Online (Sandbox Code Playgroud)\n我去掉&符号后,运行结果并没有改变。我想这两者应该是有区别的,但是我不知道到底是什么!
\n