代码之家  ›  专栏  ›  技术社区  ›  dicroce

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

  •  2
  • dicroce  · 技术社区  · 7 年前

    目前,我可以这样组合ranges-v3视图:

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

    但是如果我想从一个函数返回v,我需要知道它的类型。ranges-v3视图的类型是什么?

    1 回复  |  直到 7 年前
        1
  •  5
  •   Rakete1111    7 年前

    因为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