繁体   English   中英

将 range-v3 与 cgal 返回的右值一起使用

[英]Using range-v3 with rvalue returned by cgal

我想使用 range-v3 来枚举一个范围。 该范围由 CGAL 使用CGAL::Surface_mesh<K>::faces() function 生成,它返回网格中面的范围。

但是,range-v3 不能将视图附加到右值范围,所以我不能做mesh.faces() | ranges::views::enumerate mesh.faces() | ranges::views::enumerate

我可以将mesh.faces()的结果存储到一个临时文件中,然后使用它,但是能够在一行中执行此操作会很酷。

有没有办法做到这一点?

让我用一个简单的例子来演示

#include <vector>
#include <range/v3/all.hpp>
using namespace ranges;
static struct help_t{} help;
template<class C>
auto operator|(C const&c, help_t){return views::all(c);}
int main(){
  std::vector<int>{1,2,3} | help | views::enumerate;
}

向量仅在 2 次调用operator|后被破坏 . 这隐藏了 range-v3 的危险,在这种情况下似乎没问题......如果他们没有在 range-v3 中提供类似的东西(是吗?),即使有一个可怕的名字,我仍然会警惕它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM