【发布时间】:2017-05-24 23:27:25
【问题描述】:
W.F. 对我的问题here 给出了一个现已删除的答案,其中使用了以下行:
auto [x, y] = div_t{ 1, 0 };
从答案中的代码看来,这就像 tie 的 div_t 结构。我希望有人可以解释这里发生了什么。完整的功能代码如下:
constexpr bool first_quot() {
auto [x, y] = std::div_t{1, 0};
(void)y;
return x;
}
【问题讨论】:
-
那叫structured bindings。是的,它的工作方式类似于
tie(但一次完成了自动声明、定义和初始化)。 -
哦,还有一件事;)实际上我的答案是错误的使用结构绑定......我的答案应该更像
constexpr bool first_quot() { return std::div_t{1, 0}.quot; }(所以甚至不需要c ++ 17)根据我的工作意图:)但是因为它无论如何都被删除了,所以我没有编辑它:) -
@Someprogrammerdude 我有没有机会说服您提供该信息并将其输入为答案?当我查找
auto时,我不认为这是一种潜在的语法。我肯定希望有机会阅读并了解这里发生的事情。 -
现在,当我知道规范中的实际术语时,我会发现无处不在的引用,包括on cppreference... :)
-
@JonathanMee 完全正确。不幸的是,我认为您不能将结构绑定(或者现在调用它)与未命名的变量一起使用......
标签: c++ c++17 auto decomposition