为什么我不能在 `const filter_view` 上调用 `ranges::begin` ? [复制]

2023-11-26

我无法打电话ranges::begin on a const filter_view

https://en.cppreference.com/w/cpp/ranges/filter_view the begin and end似乎不是const。这是为什么?

int main(){
    std::vector v{1,2,3};
    // removing const will make it compile
    const auto r = v | ranges::views::filter ([](auto&&){return true;}); 
    ranges::begin(r);
}

https://godbolt.org/z/4feaYc


中的所有视图std::range图书馆的设计是懒惰的。这在实践中意味着什么?这意味着他们通常会在幕后做更多的事情begin, end和迭代器操作比常规容器。通常为了能够维持这种惰性,需要一些内部状态。例如,filterred 视图可以将迭代器存储到最后一个匹配元素或类似的东西。在这种情况下begin()改变这个内部场。甚至 cppreference 也对 begin 说了这样的话:

返回用 {*this, Ranges::find_if(base_, std::ref(*pred_))} 初始化的迭代器。为了提供范围概念所需的摊余常量时间复杂度,该函数将结果缓存在filter_view对象中以供后续调用使用。

所以这是完全有道理的 - 因为可以(并且很可能是)一个内部状态begin() and/or end()可以修改 不能修改const.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我不能在 `const filter_view` 上调用 `ranges::begin` ? [复制] 的相关文章

随机推荐

  • 修改 Google 地图类型的最大缩放级别

    我需要设置maxZoom的水平google maps MapTypeId HYBRID到 21 实际上 他设置为 14 用 firebug 控制台检查 设置属性google maps对象 maxZoom 在这种情况下不起作用 我已经尝试修改
  • 如何在 ManagedBean 中注入 CDI Bean?

    我想使用注释 Inject 或 Produce 在 ManagedBean 中注入 CDI Bean 我使用的 CDI Bean 是 Named Startup ApplicationScoped public class BaseBean
  • 如何在 Flutter 中创建圆形 ListView

    如何在 Flutter 中创建循环 ListView 我想要一些能让我围绕原点旋转的小部件列表的东西 Something similar to this 任何帮助 将不胜感激 循环列表视图演示 这可能对您有帮助 主dart import p
  • WinDbg 地址摘要

    随着用户负载的增加 我们在 IIS 中托管的 WCF 服务崩溃 w3wp exe 1 6 GB 我们通过 Debug Diag 获得了转储并在 WinDbg 中运行了此命令 这是输出 0 000 gt address summary Fai
  • Symfony 2.8 -> 3.4 升级 IsGranted('IS_AUTHENTICATED_ANONYMOUSLY') 抛出错误

    我正在将 Symfony 从 2 8 升级到 3 4 并且我有一个身份验证侦听器 监听器的构造函数 public function construct EntityManager entityManager SessionInterface
  • 如何更改工具栏上的更改文本和箭头颜色?

    我目前正在使用新的材料设计指南构建一个应用程序 我使用的是工具栏而不是操作栏 我希望文本 溢出图标和箭头 汉堡图标 当您拉出导航绘图时翻转的东西 为白色而不是黑色 但我的主题的其余部分需要是 AppCompat light 主题 如果有人可
  • 让 ApiController 与区域一起工作?

    目前 我的 ASP NET MVC 5 项目中有 2 个区域 一种叫做支持者 一个称为Chatter 在这两个区域中的每一个区域中 都有一个ApiController named CommunicationController 这会带来一个
  • 读取时如何忽略 CSV 中的空行

    尝试使用以下命令读取具有空行 通常在末尾 的 CSV 文件CsvHelper GetRecords
  • 来自 requests Python 库的 HTTP 请求中缺少 Host 标头

    哪儿是HTTP 1 1 强制 Host 标头字段在HTTP请求消息中生成requestsPython 库 import requests response requests get https www google com print re
  • Gradle build.gradle 到 Maven pom.xml

    我有一个 Gradle 项目 我需要将其所有依赖项转移并与另一个 Maven 项目一起使用 换句话说 我如何从 build gradle 生成 或者可以生成 pom xml 从 Gradle 7 开始 当使用Gradle 的 Maven P
  • 使用 z3 获得“良好”的 unsat 核心(逻辑 QF_BV)

    我正在使用 Z3 SMT 求解器来解决我使用 SMTLIB 2 语言在逻辑 QF BV 中表达的问题 该模型是不可满足的 我正在尝试让求解器产生一个不满足的核心 我的模型由几个 强制 约束组成 我使用assert声明 我希望考虑用于 uns
  • Java 15 的密封类功能中的最终类和非密封类有什么区别?

    我有以下密封接口 Java 15 public sealed interface Animal permits Cat Duck String makeSound 该接口由2个类实现 public final class Cat imple
  • iPad 上的 jQuery 鼠标悬停

    我有一个 jQuery 代码 可以在桌面浏览器上完美运行 span checkbox err mouseout function span checkbox err fadeOut slow 但同样的情况不会在 iPad 上触发 因此 ch
  • 您首选的 php 部署策略是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在开始一个 PHP 的
  • @property(非原子,retain)语句在应用程序中的用途是什么?

    我是一名初学者 iphone 开发人员 我想知道 property nonatomic retain 语句的用途是什么 例如 任何人都可以给我任何答案吗 财产告诉 Objective C 为该成员变量生成 getter 和 setter 合
  • 无限循环滑块概念

    我想知道使用 JavaScript jQuery 为网站构建无限图像循环滑块的最佳概念是什么 良好的可读代码 害虫实践代码 可重用性 我不知道如何编码幻灯片放映 但什么蓝图符合上述要求 我的问题的主要焦点是如何排列图片以获得无限循环滑块的印
  • onActivityResult() 在新的嵌套片段 API 中未调用

    我一直在用新的嵌套片段Android 包含在支持库中的 API 我面对嵌套片段的问题是 如果一个嵌套片段 即 通过FragmentManager由返回getChildFragmentManager calls startActivityFo
  • 如何在 Android 中使用 Java 和 org.json 迭代这个 JSON 数组?

    我的 JSON 字符串看起来像这样 包含在名为的字符串变量中 sJSON id 284 name John surname Doe name Jane surname Doe 我能够像这样解析第一个数组 使用 Java 并导入 org js
  • Magento - 如何检索捆绑的选项图像

    我一直在致力于我的第一个 magento 部署 建立了一个非常定制的主题 现在解决一些非标准定制 我的主要产品类型之一是办公椅 我将其设置为捆绑产品 此产品类型有许多选项 大约 100 种面料选项 手臂样式 腰部 头枕等 我需要能够在目录
  • 为什么我不能在 `const filter_view` 上调用 `ranges::begin` ? [复制]

    这个问题在这里已经有答案了 我无法打电话ranges begin on a const filter view https en cppreference com w cpp ranges filter view the begin and