C++ C++;用于收集结果的范围迭代器算法

C++ C++;用于收集结果的范围迭代器算法,c++,boost,iterator,iterator-range,C++,Boost,Iterator,Iterator Range,我编写了一个函数来收集boost迭代器范围的结果。这是: template<typename Output, typename SinglePassRange> Output collect(const SinglePassRange & rng) { Output r; boost::range::copy(rng, std::inserter(r, boost::begin(r))); return r; } 模板 输出采集(常量单通量程和rng

我编写了一个函数来收集boost迭代器范围的结果。这是:

template<typename Output, typename SinglePassRange>
Output collect(const SinglePassRange & rng)
{
    Output r;
    boost::range::copy(rng, std::inserter(r, boost::begin(r)));
    return r;
}
模板
输出采集(常量单通量程和rng)
{
输出r;
boost::range::copy(rng,std::inserter(r,boost::begin(r));
返回r;
}
这相当方便:

return collect<std::vector<int>>(ints | filtered(even) | transformed(add1));
return-collect(整数|过滤(偶数)|转换(add1));
这似乎真的应该存在,但我找不到它。(更不用说以某种方式“推断”返回类型会更好,这可能是标准实现中的一个特性。)


有人知道这样的函数吗?

auto-collect(const-SinglePassRange&rng)->decltype(yourList)?这会转换成
auto-collect(const-SinglePassRange&rng)->decltype(Output)
?我想它会转换成:->decltype(boost::range::range\u value::type)返回类型无法推断,因为我可以要求任何我想要的类型,只要我能插入它。