我有一段简单的代码:
#include <iostream>
#include <functional>
struct Copy
{
Copy(){}
Copy(const Copy&)
{
std::cout << "Copied!\n";
}
};
int main()
{
Copy copy;
std::function<void()> func = [=]{(void)copy;};
return 0;
}
它调用了copy-ctor两次,我希望只调用一次。我知道在这个简化的例子中可以使用auto,但我需要将其存储以供稍后使用,因此auto不是选项。
我的问题是:有没有一种方法可以使用=捕获列表存储lambda,并且只捕获对象的一个副本?
copy
复制到lambda中,另一个是在将lambda(其中有一个Copy
成员)复制到std::function
中时发生的。 - Mankarse