首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将range-v3与cgal返回的rvalue一起使用

将range-v3与cgal返回的rvalue一起使用
EN

Stack Overflow用户
提问于 2021-02-24 19:34:18
回答 1查看 38关注 0票数 0

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

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

我可以将mesh.faces()的结果存储到一个临时文件中,然后使用它,但是如果能够在一行中完成这项工作,那就太酷了。

有没有办法做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2021-02-25 05:23:20

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

代码语言:javascript
复制
#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中提供类似的东西(是吗?),即使有一个可怕的名字,我仍然会对它保持警惕。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66350080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档