结构化绑定初始化器内部if语句不编译?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (20)

阅读C ++ 17,现在可以在if语句中进行多重初始化:

if (int x = func(), y = func2(); x > 0 && y > 0)
{
}

不错的一个,也结合C ++ 17中的另一个特性,结构化绑定:

if (auto[iter, success] = set.insert("Hello"); success)
{   }
else    
{   }

但是在VisualStudio 2017中不能编译这两个功能。

if (auto[iter, success] = set.insert("Hello"), [iter2, success2] = set.insert("Foo"); success && success2)
{}
else
{}

失踪 ';' 之前','

这是VS2017中的一个错误还是这不可能?

提问于
用户回答回答于

语法:

selection-statement:  
    if ( init-statement condition )

init-statement:
    simple-declaration

simple-declaration:
    decl-specifier-seq init-declarator-list;
    decl-specifier-seq ref-qualifier [ identifier-list ] initializer ;

所属标签

可能回答问题的人

  • 爸爸

    腾讯 · 客户端安全 (已认证)

    4 粉丝4 提问5 回答
  • 找虫虫

    0 粉丝0 提问5 回答
  • 不吃貓的鱼oo

    5 粉丝466 提问4 回答
  • uncle_light

    5 粉丝518 提问4 回答

扫码关注云+社区

领取腾讯云代金券