2
Q
Ç指定拉姆达捕捉
A
回答
7
当且仅当它不捕获任何东西时,才能将lambda转换为函数指针(bool func (void)
)。所以第一部分编译但第二部分不会。
您应该使用std::function
#include <functional>
int foo(std::function<bool(void)> func) {
int i; for (i = 0; i < 10 && func(); i++);
return i;
}
或模板
template <class TFunc>
int foo(TFunc && func) {
int i; for (i = 0; i < 10 && func(); i++);
return i;
}
相关问题
- 1. 终身拉姆达的捕捉
- 2. 获取对拉姆达的捕捉值
- 3. LAMBDA拉姆达的:功能不捕捉
- 4. 动态拉姆达包裹着尝试捕捉
- 5. 拉姆达*指定参数时,** kwargs:无
- 6. 未公开的GCC C++ 11扩展?拉姆达捕捉捕捉任意表达式列出
- 7. 比较拉姆达捕获C#和Java
- 8. 的Java 8拉姆达捕获异常
- 9. 规则拉姆达捕获变量
- 10. 在通用拉姆达捕获使用该指针
- 11. C#拉姆达
- 12. 由拉姆达
- 13. 与拉姆达
- 14. 声明拉姆达可以表达拉姆达
- 15. “捕捉”指南
- 16. 分组拉姆达
- 17. 没有拉姆达
- 18. 通过拉姆达
- 19. C#拉姆达(=>)
- 20. 分配拉姆达
- 21. 拉姆达表达事件
- 22. 终身拉姆达的常量lambda表达式捕获引用
- 23. 热处理C++ 11拉姆达与这两个指针捕获和调用约定指定
- 24. 拉姆达调用另一个外部拉姆达
- 25. 过滤实体设定拉姆达
- 26. 寻找主定理的拉姆达
- 27. 帕拉姆从必须指定
- 28. C++拉姆达:拉姆达访问静态方法导致错误“这是没有捕捉到这个lambda函数”
- 29. 使用LINQ拉姆达
- 30. 检查拉姆达代码
就是这样。我不知道我怎么没有找到原来的问题。 –
你会想通过值,“通用引用”或const引用来获取'func';评估一个lambda表达式的结果是一个prvalue,所以'TFunc&'不起作用。 –
@StuartOlsen谢谢。更新。 –