我不明白爲什麼這不起作用。我有一個函數返回std::find
方法的結果。我讀過它返回一個迭代器來找到它的對象。但是,當我嘗試傳遞返回該值的lambda時,它給了我一堆錯誤,爲什麼?爲什麼我不能獲得std :: function <std :: vector <T> :: iterator>綁定到返回該類型的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);
}
我收到很多不可理解的錯誤。我甚至在這裏做了類型檢查和真的返回:
std::is_same<std::vector<int>::iterator, decltype(std::find(v.begin(), v.end(), N))>::value;
// -> true
那麼,爲什麼這個工作時,我傳遞給f
功能與std::function
返回此類型的?
你能提供一個關於你得到的錯誤的提示嗎?只是第一個或第二個;之後他們通常是無稽之談。 –