std::ignore 与结构化绑定?

2023-12-10

Prelude:

std::tuple<int, int, int> f();
std::tuple<int, int, float, int> g();

C++1z 将引入结构化绑定的语法,这将使得编写而不是

int a, b, c;
std::tie(a, b, c) = f();

就像是

auto [a, b, c] = f();

然而,std::tie也允许指定std::ignore忽略某些组件,例如:

std::tie(a, b, std::ignore, c) = g();

使用新的结构化绑定语法可以做类似的事情吗?它将如何运作?


结构化绑定提案包含一个专门的部分来回答您的问题(P0144R2):

3.8 是否应该有一种方法来显式忽略组件?

动机是消除有关未使用名称的编译器警告。 我们认为答案应该是“还没有”。这不是由用例驱动的(沉默编译器警告是一种动机,但它本身不是用例),并且最好保留到我们可以在更通用的模式匹配提案的上下文中重新访问它之前,这应该会失败作为一个特例。

对称性std::tie会建议使用类似的东西std::ignore:

tuple<T1,T2,T3> f();

auto [x, std::ignore, z] = f(); // NOT proposed: ignore second element

然而,这感觉很尴尬。

预期语言中的模式匹配可能会建议使用通配符,例如_ or *,但由于我们还没有模式匹配,所以选择我们知道兼容的语法还为时过早。这是一个纯粹的扩展,可以等待与模式匹配一​​起考虑。

但请注意,相关国家机构 (NB) 目前正在修订该标准的工作草案,并且有一条 NB 评论要求此功能 (P0488R0,100 美元):

分解声明应该提供语法来丢弃一些返回值,就像std::tie uses std::ignore.

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

std::ignore 与结构化绑定? 的相关文章

  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 使用单例进行单元测试

    我已经使用 Visual Studio Team Edition 测试框架准备了一些自动测试 我希望其中一项测试按照程序中完成的正常方式连接到数据库 string r providerName ConfigurationManager Co
  • Delphi 字典和排序数据

    我的代码是 procedure TfrmSettings btnFillDictClick Sender TObject var Dict TDictionary
  • 在 Node.js 中复制 Java 密码哈希代码 (PBKDF2WithHmacSHA1)

    编辑 我的问题已更新 请查看这篇文章的底部以了解最新一期 我把剩下的留给那些想阅读整个故事的人 我一直致力于将一个小型 Java 应用程序转换为 Node js 大部分进展顺利 我必须查找大量 Java 函数来弄清楚它们的作用以及如何在 N
  • 获取mysql查询中一行的排名

    我使用此查询根据每个名字获得的票数为他们分配排名 但它返回错误 1248 每个派生表必须有自己的别名 这是我的代码 SELECT rownum rownum 1 AS rank name vote FROM table SELECT row
  • getJSON 不支持 async:false

    我下面有这段代码 它应该返回调用的结果 我需要同步执行此操作 以便我知道一切都很好 但它似乎不起作用 我究竟做错了什么 jQuery library http code jquery com jquery 1 9 1 min js func
  • Apache Beam -> BigQuery - 用于重复数据删除的 insertId 不起作用

    我使用 apache beam 和 google dataflow runner 将数据从 kafka 流式传输到 BigQuery 我想利用 insertId 进行重复数据删除 我在谷歌文档中找到了描述 但即使插入是在几秒钟之内发生的 我
  • 如何在 Google 地图中跟踪用户全天的位置?

    您如何跟踪用户一整天的位置 就像 Google 地图中的时间线一样 我有两个想法 例如 如果我有 200LatLng每天的价值 我如何通过所有这些LatLng值到谷歌地图作为点 我得到了一个谷歌文档参考因为我最多只能跟踪 10 个位置点 是
  • 如何在平板电脑/智能手机上启用立体声录音,尽管有两个内置麦克风,但仅产生单声道?

    到目前为止 我认为这是一个固件错误 但现在我刚刚发现第二个设备 它有两个内部麦克风胶囊 但只产生单声道信号 第一个是S2加GT I9105PAndroid 4 1 2 和现在HTC One M7 the Nexus 10Android 4
  • 使用servlet接收音频文件

    故事简介 我有一个 Servlet 它接收一个我无法读取的请求 getContentType audio x wav 我需要读取这一波并将其保存在服务器端 详细故事 我对 Flex javascript PHP 和 Python 一无所知
  • 重命名 s3 中的 Pyspark 输出文件

    我使用以下命令将 pyspark 数据帧保存到 s3 df coalesce 1 write partitionBy DATE format com databricks spark csv mode overwrite option he
  • 使用 glm 和二项式族更改参考组

    当我在 R 中使用由三个级别 较高 中 和 较低 组成的独立因子变量运行二项式回归时 我想使用以下命令更改参考类别relevel我收到此错误 Error in relevel ordered cbsnivcat3 Lower relevel
  • 删除括号前后的所有空格

    我想删除一个或多个空格before and after任何括号 下列的这个帖子PHP 的问题已通过以下正则表达式解决 lt 现在我想做同样的事情JavaScript但 Javascript 正则表达式引擎不具有与 PHP 相同的前瞻和后瞻功
  • 如何在 Android Lollipop 中保存 WebView 状态并恢复它?

    这个问题被问过多次 并且有曾经有效的答案 最近在文档中表示 出于安全原因 他们删除了此功能 webView状态只能恢复一些有限的东西 我尝试了多种方法来做到这一点 但每次刷新 webView 状态时 它都不会显示 webView 内容 我想
  • 如何使用 VSTS 扩展隐藏快速添加面板待办事项项?

    我想制作一个 VSTS 扩展 可以在加载页面时隐藏快速添加面板积压项目 快速添加面板待办事项 该扩展是针对 TFS 2015 更新 2 进行的 我已经运行了这段代码 但没有任何反应 动作 html
  • 在python beautifulsoup中从html中提取json

    我正在做一些爬虫 需要从用 bs4 做汤后返回的 div 中提取 json 内容 所以我现在得到了一个变量字符串 其中包含此文本变量 div class header product js header product div
  • 在 Polly 重试策略中重用 HttpRequestMessage

    An HttpRequestMessage对象只能使用一次 未来尝试使用同一对象会抛出异常 我正在使用 Polly 重试一些请求 但遇到了这个问题 我知道如何克隆请求 有很多关于 SO 的示例 但我不知道如何克隆请求并在 Polly 重试时
  • 无法从 recyclerview 实时数据库中删除项目

    我正在尝试设置一种方法来从 firebase 实时数据库中永久删除项目 由于某种原因 我不断收到一条错误消息 提示 getRef 不存在 尽管很多人使用相同的方法来删除项目 但我已尝试阅读并尝试多篇文章中的解决方案 但它并没有真正起作用 这
  • 如何在QML中封装自定义控件?

    我想创建一个 QML 自定义控件库 并将其提供给我的客户 同时 我不希望我的客户通过查看 QML 源代码来 逆向工程 我的控件 避免这种情况的最佳选择是什么 理想的情况是我将控件作为编译库提供 他们可以将其导入到自己的项目中 我的目标平台是
  • 如何在 3 延迟后删除元素?

    gallerie ul li eq 1 animate opacity 1 1250 remove results in instand remove gallerie ul li eq 1 delay 3000 remove instan
  • std::ignore 与结构化绑定?

    Prelude std tuple