问题标签 [std-tie]

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.

0 投票
3 回答
22532 浏览

c++ - std::ignore 与结构化绑定?

序幕:

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

就像是

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

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

0 投票
1 回答
378 浏览

c++ - 为什么结构化绑定因 'std::tie' d 对象而失败?

我很想 通过以下方式解决这个问题:

I std::tied 返回的迭代器std::prevand std::next,并允许结构化绑定进行auto推导。

看起来它允许的唯一编译器是MSVC v19.14/O2 /std:c++17GCC 9.1clang 8.0不同意这一点。见在线编译器:https ://godbolt.org/z/DTb_OZ

海湾合作委员会 说:

铿锵声 说:

查看cppreference.com 中给出的示例 MSVC 是否正确?或谁在这里,为什么?

有趣的是,在运行

给我

在此处输入图像描述

(在MSVS 2019中,/std:c++17

0 投票
3 回答
229 浏览

c++ - 使用 std::tie 进行类似 golang 的错误处理同时返回结果是否有缺点?(C++11)

在进行错误处理并仍然返回值的常用方法是使用元组。

我想知道当异常不适用时,在 C++ 中使用 std::tie 做同样的事情是否是个好主意。

喜欢

这样做有什么缺点(性能或其他)?我想通过返回值优化它并没有真正产生影响,但也许我错了。

我可以看到的一个潜在问题案例是在交叉编译器 API 中的使用,但这并不特定于这种使用。

我目前的做法是

但这允许传入数据值。

错误代码本身是已经定义的,我无法更改。

编辑:我正在使用/必须使用 C++11

0 投票
1 回答
106 浏览

c++ - 在变量前面添加 : 会给出错误的结果

我在比较班级。对于下面的代码

输出是:

这是错误的,因为其中两个类是相同的。

但是,如果我将代码行从更改e e1 : 1;e e1;它会给出正确的结果。

首先我想知道 : 在这种情况下是做什么的?为什么添加这个后结果是错误的?

代码可以在这里看到。

提前致谢。

0 投票
0 回答
28 浏览

c++ - 是否有类似 `std::tie` 的东西用于将返回的结构中的值传递到现有变量中?

我有一个像这样的代码:

并且GetAmountAndPrice正在返回std::pair,所以它起作用了。

但是有一个代码审查建议将返回类型更改为 struct 所以很清楚返回值代表什么,我认为这是很常见的一点。

但是随着将返回类型从更改std::pair为某个结构,我不能使用std::tie来设置info.
(而且我显然不想创建返回结构的临时实例来加载值。)

什么是解决这个问题的简洁现代方法?我们使用 C++17,但我什至对 C++20 感到好奇,如果它有所改进的话。

0 投票
1 回答
91 浏览

c++ - 使用带有位字段的 std::tie 似乎失败了

我在C++17中有以下代码,我在其中定义了struct一个位掩码,并且具有类型为位字段的成员变量bool

我正在定义一个tie函数,以便我可以将它转换为一个可比较的std::tuple对象,这很方便。问题是:std::tie似乎做错了什么,并且第一个成员变量的值似乎是false即使默认构造函数已正确将其初始化为true.

手动对位字段进行单个引用bool似乎可以按预期工作。

我目前正在使用 CLang 12。

这是代码: