将迭代器取消引用到临时范围时出现非指针操作数错误

2024-05-05

Using

auto empty_line = [](auto& str){ return str.size() == 0; };

我们做得到:

auto line_range_with_first_non_empty = 
                ranges::view::drop_while(ranges::getlines(std::cin),empty_line);
auto input1 = std::stoi(*line_range_with_first_non_empty.begin());

我们还可以这样做:

auto line_range2 = ranges::getlines(std::cin);
auto iter2 = ranges::find_if_not(line_range2,empty_line);
auto input2 = std::stoi(*iter2);

不幸的是,当我尝试将上面的版本缩短为:

auto iter3 = ranges::find_if_not(ranges::getlines(std::cin),empty_line);
// auto input3 = std::stoi(*iter3);

我收到错误:

<source>:22:29: error: indirection requires pointer operand ('ranges::v3::dangling<ranges::v3::_basic_iterator_::basic_iterator<ranges::v3::getlines_range::cursor> >' invalid)
    auto input3 = std::stoi(*iter3);
                            ^~~~~~

我以为这是因为无限范围,但我错了。

auto sin = std::istringstream{"\n\n\nmy line\n"};
auto iter4 = ranges::find_if_not(ranges::getlines(sin),empty_line);
// Error when deref.
// auto input4 = std::stoi(*iter4);

这会产生相同的错误。

<source>:27:29: error: indirection requires pointer operand ('ranges::v3::dangling<ranges::v3::_basic_iterator_::basic_iterator<ranges::v3::getlines_range::cursor> >' invalid)
    auto input4 = std::stoi(*iter4);
                        ^~~~~~

为什么我不能取消引用ranges::find_if接受一个范围作为右值?

Does ranges::getlines返回一个范围?如果是这样,范围应该拥有东西吗?

godbolt.org/g/Yo6tKa https://godbolt.org/g/Yo6tKa


如果传递给算法的范围是临时的,并且该算法返回一个迭代器,则该迭代器被包装在dangling包装器以防止您做任何不安全的事情。任务完成。 :-)

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

将迭代器取消引用到临时范围时出现非指针操作数错误 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么

随机推荐

  • 使用请求和多处理时的奇怪问题

    请检查这个Python代码 usr bin env python import requests import multiprocessing from time import sleep time from requests import
  • 使用正在运行的进程的共享内存收集核心转储

    核心转储仅收集进程空间 而不收集为进程间通信创建的共享内存 如何使核心转储也包含正在运行的进程的共享内存 设置核心文件过滤器 proc PID coredump filter per http man7 org linux man page
  • Pandas 多索引数据框删除行

    我的多索引 DF 如下 tuples list zip a a b b c d c d index pd MultiIndex from tuples tuples names i1 i2 df pd DataFrame 5 6 7 8 i
  • 如果表不存在,如何使用 Derby Db 创建表

    我是新来的apache derby我似乎无法工作 CREATE TABLE IF NOT EXISTS table1 可以实现MySql等等我得到了 Syntax error Encountered NOT at line 1 column
  • QT“找不到 Qt 平台插件“xcb””

    我出于学术原因安装了QT everywhere 5 15开源版 但无法运行程序 首先 我编译了必要的源文件make并安装了QT Creator 然后我选择qmake来运行其中的程序 当我尝试运行示例程序时 遇到以下错误 qt qpa plu
  • 使用 SAS EG 通过代理从 API 下载 JSON 文件

    我正在尝试使用瑞士当局提供的 API 对公司网络内的地址进行地理编码 我的公司使用带有用户名和密码的代理服务器 我是 SAS EG 的新手 这是我迄今为止拥有的代码 我必须匿名一些内容才能被允许在此处发布 filename response
  • webpack 5 中是否可以让不同的入口包到不同的输出路径

    我正在使用 webpack 打包 google chrome 扩展 我想将文件夹结构保留在 dist 文件夹中 例如 我想将所有弹出资源打包在dist popup 这是我现在的配置 const path require path const
  • android应用程序在模拟器上运行但在手机上运行

    我有我开发的这个应用程序 它在模拟器上运行得很好 没有任何错误 但当我尝试在手机上运行相同的代码进行测试时 应用程序崩溃并提示 filenotfoundexception 它说文件 res drawable divider horizo n
  • 如何通过 SSL 将文件直接上传到 S3?

    我已经使用基于浏览器的 Amazon S3 直接 POST 上传有一段时间了 最 近想开始通过 HTTPS 发布 普通的 HTTP 帖子就可以正常工作 但是 当我将相同的表格发布到https s3 amazonaws com https s
  • 如何提供其他语言的javadoc? [复制]

    这个问题在这里已经有答案了 我们经常与西班牙 智利 印度等其他国家开发和维护的服务集成 我一直看到来自西班牙和智利的服务 API 调用都是西班牙语 但我们希望我们的代码是英语 Javadoc 是英语和西班牙语 我正在寻找实现这一目标的最佳方
  • 使用 Shell 脚本提供密码

    我已将客户端和服务器设置为无密码登录 就像无密码登录一样 通过将服务器的 RSA 密钥复制到所有客户端的 root ssh id rsa pub 来实现 但这是我手动完成的 我喜欢使用 shell 脚本自动执行此过程 并通过脚本向计算机提供
  • cipher.update在java中做什么?

    我正在实施 DES CBC 我很困惑什么cipher init cipher update and cipher dofinal做 我只是使用 init 来设置密钥dofinal得到结果 我不使用更新 那是对的吗 另外使用时结果有什么不同U
  • 收到别人的pull-request,如何编辑然后直接在github上合并?

    作为参考 这里是一个命令行git解决方案如何处理审查拉取请求 修改代码和合并 https stackoverflow com questions 27355333 how to handle review a pull request mo
  • 恢复多个监视器的窗口大小/位置

    许多帖子都涉及恢复 WinForm 位置和大小 例子 www stackoverflow com questions 92540 save and restore form position and size http www stacko
  • autofac wcf注册错误

    我正在尝试在 Wcf 上尝试使用 Autofac 进行结构 namespace WcfService1 Model DataContract IsReference true public partial class Account Dat
  • 聊天机器人中的打字指示器

    Nodejs 中机器人框架的输入指示器 Hi 我正在使用 microsoft bot 框架 v4 node js 我需要在聊天机器人中实现输入 在发送原始响应之前 机器人应该像 一样响应 我在这里看到了代码使用 DirectLine 和网络
  • 如何复用UI元素的组合?

    在我的 UWP xaml 文件中 我需要在下面的 ScrollViewer 代码中重用 StackPanel 该怎么做
  • 构建成功后从远程计算机上的工作区执行 Shell 脚本 (Jenkins)

    场景是 我有一个工作 A 它运行我的 ant 脚本并为我打包工件 我还使用参数化触发器插件来触发我的 作业 B 它将在远程计算机上部署我的工件 工作 A 工作正常 工作 B 也工作正常 我必须使用作业 B 执行的任务是 GIT checko
  • 需要在 java api 中的 Solr 搜索中搜索文本及其周围的几行

    我正在使用 solr 7 7 2 并且我使用 solrj 在 Solr 中编写了一个 Java 程序 该程序在一个巨大的文本文件中搜索单词 我使用以下代码来显示代表整个文本的搜索结果 SolrQuery params new SolrQue
  • 将迭代器取消引用到临时范围时出现非指针操作数错误

    Using auto empty line auto str return str size 0 我们做得到 auto line range with first non empty ranges view drop while range