问题标签 [structured-bindings]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Lambda 隐式捕获因结构化绑定声明的变量而失败
使用以下代码,我得到一个编译错误C2065 'a': undeclared identifier
(使用 Visual Studio 2017):
但是,以下代码编译:
我认为这两个样本是等价的。是编译器错误还是我遗漏了什么?
c++ - if 语句中的结构化绑定初始化程序无法编译
阅读 C++17,现在可以在 if 语句中进行多次初始化:
不错的一个,也结合了 C++17 中的另一个特性,结构化绑定:
但是在 VisualStudio 2017 中结合这两个功能无法编译。
失踪 ';' 前 ','
这是VS2017中的错误还是不可能?
c++ - 为什么无法使用结构化绑定分解 lambda 表达式的捕获列表
在你扔烂番茄之前
我知道 lambda 分解的实际应用目前受到限制,因为无法找到对替换失败友好的方法来检查隐藏在分解变量中的 lambda 捕获的数量。这只是一个理论问题,因为我找不到任何涵盖捕获成员变量访问修饰符的标准部分。
例子
标准参考
关于lambda 捕获的标准部分很长,所以我可能错过了相关的片段。我注意到的是,与捕获相对应的非静态成员是/必须是未命名的。
c++ - 基于自动范围的结构化绑定与向量
我正在尝试遍历元组向量:
通过使用具有结构化绑定的基于范围的 for 循环:
但是 Visual Studio 2017 15.3.5 给出了错误:
无法推断“自动”类型(需要初始化程序)
但以下确实有效:
这是为什么?
c++ - 为什么结构化绑定仅适用于 auto
c++17 引入了结构化绑定。它们能够声明从元组或结构初始化的多个变量。
此代码使用编译器进行c++17
编译。
如果我不声明变量,auto
我会收到错误
错误:预期的 lambda 表达式主体 [d2 , i2] = tuple;
我使用clang version 4.0.0
了和编译选项-std=c++1z
。
我可以将现有变量分配给结构化绑定吗?我需要使用auto
吗?
c++ - 结构化绑定和基于范围的绑定;抑制 gcc 中未使用的警告
我想使用结构绑定遍历地图,忽略关键:
我用 gcc-7.2.0 尝试了不同的选项:
似乎[[maybe_unused]]
尚未为结构绑定实现该属性。
有什么简单的解决方案吗?任何宏、gcc/gnu 扩展或任何临时禁止该特定警告的编译指示对我来说都可以;例如,在我使用 range-based-for 的整个函数体中禁用它,因为我使用的函数非常短(它基本上是两个具有精确行为的不同映射上的 range-for-loop )。
我用来编译项目的(相关)选项是:
我目前要做的是,但这很丑:
c++ - 是否有没有“自动”我无法使用的功能(特别是结构化绑定)?
auto
引入关键字以简化代码。特别是,迭代 stl 容器变得更容易和更好看,而不必std::vector<MyType>::iterator
每次想要循环它时都使用丑陋的语法。但是,仍然可以编写代码而不使用auto
which 会做完全相同的事情。
现在(我认为)如果没有 ,您将无法使用某些功能auto
,尤其是结构化绑定:
所以,两个问题:
- 我是否正确,如果
[x, y]
不使用auto
(仍然使用结构化绑定)就无法初始化?有没有办法明确地初始化它:*explicit_type* [x, y] = f();
? - 还需要使用哪些其他功能
auto
?
c++ - 遍历元组向量 c+17 样式不起作用?
我目前正在寻找可以迭代这个元组向量的简洁方法。
这就是我目前正在做的事情?
即使它完成了这项工作,它似乎也不是“读者”友好的,还有其他方法可以让我以更读者友好的方式迭代向量的元素吗?
我试图使 for 循环更具可读性的一种方法是这样制作:
但这不知何故给了我这个错误:
for-loop - 使用结构绑定时,qtcreator 不会自动完成?
我似乎有一个问题,qtcreator 没有自动完成我的代码,这很烦人。
目前,当我尝试在这样的 for 循环中使用结构绑定时,它无法自动完成。
qtcreator 基本上抱怨上面发布的代码的所有内容..
但是当我这样写时:
qtcreator 不会抱怨这段代码,而且似乎可以自动完成它。那么为什么它会导致 c++17 风格出现这么多问题呢?
对此有任何修复吗?