【问题标题】:What is the auto Bracketed List Syntax?什么是自动括号列表语法?
【发布时间】:2017-05-24 23:27:25
【问题描述】:

W.F. 对我的问题here 给出了一个现已删除的答案,其中使用了以下行:

auto [x, y] = div_t{ 1, 0 };

从答案中的代码看来,这就像 tiediv_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


【解决方案1】:

在大多数most recent draft of the C++17 specification 中,它被称为“分解声明”,并在第 8.5 节 [dcl.decomp] 中定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-01
    • 2015-09-16
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    相关资源
    最近更新 更多