如何声明ranges-v3视图的返回值?

时间:2018-12-03 19:33:35

标签: c++ range-v3

目前,我可以像这样编写range-v3视图:

auto v = ranges::view::reverse | ranges::view::filter([](int l){return l>5;});

但是,如果我想从函数返回v,则需要知道其类型。范围-v3视图的类型是什么?

1 个答案:

答案 0 :(得分:5)

从C ++ 14开始,您可以使用auto作为函数的返回类型,并且将推导出它:

auto f() {
    return ranges::view::reverse | ranges::view::filter([](int l){return l>5;});
}
// f's return type is the type of the return expression, exactly as is I had:
// auto returnValue = return-expression;
// where f's type is decltype(returnValue)

唯一的缺点是f的定义必须出现在使用它的同一个TU中。