我正在尝试在C++中重现Java的Streams API,并已经编写了以下程序。
#include <iostream>
using namespace std;
template <typename E>
class stream {
virtual void collect(void (*consumer) (E)) = 0;
virtual bool anyMatch(bool (*predicate) (E)) {
bool found = false;
collect([&found](E obj) -> { if (predicate(obj)) {found = true} });
return found;
}
};
int main() {
return 0;
}
但是当我试图使用g ++编译它时:
我的lambda表达式哪里出了错?它应该提供一个函数(消费者),该函数将使用谓词(一个函数)测试给定的E,如果评估结果为true,则设置found为true。
std::function
- Igor Tandetnikcollect([&found, predicate](E obj) { if (predicate(obj)) {found = true;} });
- Ami Tavory