我正在尝试在 STL 容器(例如vector
和list
. 这是我的实现:
#include <functional>
#include <algorithm>
template<class A, class B, template <class> class F>
F<B> fmap(F<A> &functor, std::function<B(A)> &f)
{
F<B> newFunctor;
return std::transform(begin(functor)
, end(functor)
, begin(newFunctor)
, f);
}
但是当我尝试用代码调用它时:
vector<int> v;
for(int i = 0; i < 5; i++) {
v.push_back(i);
}
vector<int> w = fmap(v, [](int i) { return i + 1; });
我得到一个no matching function call
错误。
我怎样才能让它工作?