これが機能しない理由がわかりません。std::find
メソッドの結果を返す関数があります。見つかったオブジェクトにイテレータを返すことを読みました。しかし、その値を返すラムダを渡そうとすると、大量のエラーが発生するのはなぜですか?
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
withに渡すと、なぜこれが機能しないのでしょうか?std::function