【发布时间】:2018-10-20 11:20:17
【问题描述】:
我想编写一个简单的函数来简化 std::transform 以对单个向量进行转换。
到目前为止我得到了什么:
template<typename T>
void transform(std::vector<T> &vec, const std::function<T(const T &)> &fun) {
std::transform(std::begin(vec), std::end(vec), std::begin(vec), fun);
}
现在当我想使用这个功能时,我可以写,例如:
transform<int>(vec, my_function);
但如果我可以使用,我会更喜欢
transform(vec, my_function);
有没有办法调整我的代码以自动推断类型?
错误:
no matching function for call to 'transform' and note: candidate template ignored: could not match 'function<type-parameter-0-0 (const type-parameter-0-0 &)>' against '(lambda at [...]
【问题讨论】:
-
@songyuanyao 我得到
error: no matching function for call to 'transform'和note: candidate template ignored: could not match 'function<type-parameter-0-0 (const type-parameter-0-0 &)>' against '(lambda at [...]
标签: c++ c++11 templates implicit-conversion template-argument-deduction