如何从未知视图中声明范围::v3::View 变量



我的问题与上一篇文章几乎相同: "如何声明范围 v3 视图返回值?">

但是这个答案只是说避免声明返回类型并改用auto,这并不能解决我的问题,我在任何地方都找不到这个问题。

我需要创建一个结构,该结构包含由运行时确定的几个函数之一返回的某种类型的视图。这里是基于引用帖子的代码片段。其他函数相似,只是视图类型不同;

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

我的第一直觉是根据返回的类型制作模板结构,我认为这样可以解决问题,但是如果没有类型名,我该怎么做?

如何声明这样的类变量?

另外,因为我的情况实际上比上面更复杂,所以模板并不理想。我更喜欢是否有办法保存任何非模板结构的视图?

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

我能够创建一个带有成员any_view的结构,并像您对典型范围::view所期望的那样使用它,而无需知道确切的类型

最新更新