如何从未知视图声明 range::v3::View 变量

how do to declare a range::v3::View variable from an unknown view

我的问题和之前的 post 几乎一样:

但是那个答案只是说避免声明 return 类型并使用 auto 代替,这并没有解决我的问题,而且我在任何地方都找不到这个问题。

我需要创建一个结构来保存某种类型的视图 return 由 运行 时确定的几个函数之一编辑。这里的代码片段基于引用的post。其他功能类似,只是视图类型不同;

auto my_view(...)
{ // ...
    return ranges::view::reverse | ranges::view::filter([](int l){return l>5;});
}

我的第一直觉是根据 returned 类型制作模板结构,我认为这可以解决问题,但我如何在没有类型名的情况下做到这一点?

如何声明这样一个 class 变量?

另外,因为我的情况其实比上面更复杂,模板不太理想。如果有一种方法可以将任何视图保存为非模板结构,我更愿意?

ranges::any_view 是最能解决我问题的答案

我能够创建一个包含成员 any_view 的结构,并像您期望的典型 ranges::view 一样使用它,而无需知道确切的结构输入