我不明白为什么这不起作用。我有一个返回std::find
方法结果的函数。我读到它返回一个迭代器到它找到的对象。但是当我尝试传递返回该值的 lambda 时,它给了我一堆错误,为什么?
void f(std::function<std::vector<int>::iterator()>) {}
int main()
{
std::vector<int> v{0, 1, 2, 3};
auto p = [=] (int n) {
return std::find(v.begin(), v.end(), n);
};
f(p);
}
我得到了很多难以理解的错误。我什至在这里进行了类型检查,结果返回 true:
std::is_same<std::vector<int>::iterator, decltype(std::find(v.begin(), v.end(), N))>::value;
// -> true
f
那么,当我将一个函数传递给std::function
返回这种类型的函数时,为什么这不起作用呢?