【发布时间】:2017-01-16 18:50:03
【问题描述】:
假设我有这个函数:(它几乎对容器中的每个值运行一个函数,然后返回每次迭代结果的向量)
#include <vector>
using std::vector;
template<class F, class V>
auto vmap(const F &f, const V &v) -> vector<decltype(f(v[0]))> {
vector<decltype(f(v[0]))> result;
result.reserve(v.size());
for (auto &p : v)
result.push_back(f(p));
return result;
}
我不能这样称呼它:
vector<int> vint = {1,2,3,4,5};
vmap([](auto &p) {return p++;},vint);
因为参数化的vector 是const,为了实现它,我必须创建两个vmap 得到非const V 和一个const。
当有多个容器/vectors 传递给一个函数时开始感觉太多了,因为它让我写2^containers_count 函数。
是否有任何(-肮脏但有效的)解决方案?
【问题讨论】:
标签: c++ templates constants template-argument-deduction