我有一个简单的代码:
#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 2 次,我只想拥有它一次。我知道我可以在这个简化的示例中使用 auto 但我需要将其存储起来以供以后使用,因此 auto 不是选项。我的问题是:有没有办法用= capture list 存储 lambda 并且只有一个捕获对象的副本?