问题标签 [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.
c++ - std::ignore 与结构化绑定?
序幕:
C++1z 将引入结构化绑定的语法,这将使编写而不是
就像是
但是,std::tie
也允许指定std::ignore
忽略某些组件,例如:
是否可以使用新的结构化绑定语法做类似的事情?它将如何运作?
c++ - 为什么结构化绑定因 'std::tie' d 对象而失败?
我很想 通过以下方式解决这个问题:
I std::tie
d 返回的迭代器std::prev
and std::next
,并允许结构化绑定进行auto
推导。
看起来它允许的唯一编译器是MSVC v19.14/O2 /std:c++17
!GCC 9.1和clang 8.0不同意这一点。见在线编译器:https ://godbolt.org/z/DTb_OZ
海湾合作委员会 说:
铿锵声 说:
查看cppreference.com 中给出的示例 MSVC 是否正确?或谁在这里,为什么?
有趣的是,在运行
给我
(在MSVS 2019中,/std:c++17
)
c++ - 使用 std::tie 进行类似 golang 的错误处理同时返回结果是否有缺点?(C++11)
在进行错误处理并仍然返回值的常用方法是使用元组。
我想知道当异常不适用时,在 C++ 中使用 std::tie 做同样的事情是否是个好主意。
喜欢
这样做有什么缺点(性能或其他)?我想通过返回值优化它并没有真正产生影响,但也许我错了。
我可以看到的一个潜在问题案例是在交叉编译器 API 中的使用,但这并不特定于这种使用。
我目前的做法是
但这允许传入数据值。
错误代码本身是已经定义的,我无法更改。
编辑:我正在使用/必须使用 C++11
c++ - 在变量前面添加 : 会给出错误的结果
我在比较班级。对于下面的代码
输出是:
这是错误的,因为其中两个类是相同的。
但是,如果我将代码行从更改e e1 : 1;
为e e1;
它会给出正确的结果。
首先我想知道 : 在这种情况下是做什么的?为什么添加这个后结果是错误的?
代码可以在这里看到。
提前致谢。
c++ - 是否有类似 `std::tie` 的东西用于将返回的结构中的值传递到现有变量中?
我有一个像这样的代码:
并且GetAmountAndPrice
正在返回std::pair
,所以它起作用了。
但是有一个代码审查建议将返回类型更改为 struct 所以很清楚返回值代表什么,我认为这是很常见的一点。
但是随着将返回类型从更改std::pair
为某个结构,我不能使用std::tie
来设置info
.
(而且我显然不想创建返回结构的临时实例来加载值。)
什么是解决这个问题的简洁现代方法?我们使用 C++17,但我什至对 C++20 感到好奇,如果它有所改进的话。
c++ - 使用带有位字段的 std::tie 似乎失败了
我在C++17中有以下代码,我在其中定义了struct
一个位掩码,并且具有类型为位字段的成员变量bool
。
我正在定义一个tie
函数,以便我可以将它转换为一个可比较的std::tuple
对象,这很方便。问题是:std::tie
似乎做错了什么,并且第一个成员变量的值似乎是false
即使默认构造函数已正确将其初始化为true
.
手动对位字段进行单个引用bool
似乎可以按预期工作。
我目前正在使用 CLang 12。
这是代码: