我试图创建 lambda 向量,但失败了:
auto ignore = [&]() { return 10; }; //1
std::vector<decltype(ignore)> v; //2
v.push_back([&]() { return 100; }); //3
到第 2 行,它编译良好 http://ideone.com/GYEDX。但是第 3 行给出了编译错误 http://ideone.com/ddyJy:
错误:没有匹配的函数可用于调用 'std::vector>::push_back(main()::)'
我不需要函数指针向量或函数对象向量。然而,封装函数对象的向量reallambda 表达式,对我有用。这可能吗?
每个 lambda 都有不同类型——即使他们有相同的签名。您必须使用运行时封装容器,例如std::function
如果你想做那样的事情。
e.g.:
std::vector<std::function<int()>> functors;
functors.push_back([&] { return 100; });
functors.push_back([&] { return 10; });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)