在Visual Studio 2017中使用c ++ 17'结构化绑定'功能

Jas*_*son 0 c++ visual-studio c++17

我正在尝试在我的代码中使用一些c ++ 17功能,例如结构化绑定,但编译器一直给我错误,我不确定是不是因为我做错了或者我没有设置c + +17适合在VS17中工作.我正在尝试编译的简单代码是:

#include <iostream>

struct S
{
    int i = 0;
    float f = 32.0f;
};

int main()
{
    S s;

    auto [i, f] = s();

    std::cin.get();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

从理解这个文章,这是我会怎么用新的C++语法17返回多个值.但是,我一直收到这些错误:

c:\users\jason\documents\visual studio 2017\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(16): error C2059: syntax error: 'empty declaration'
1>c:\users\jason\documents\visual studio 2017\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(16): error C2143: syntax error: missing ';' before '['
1>c:\users\jason\documents\visual studio 2017\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(16): warning C4467: usage of ATL attributes is deprecated
1>c:\users\jason\documents\visual studio 2017\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(16): error C2337: 'i': attribute not found
1>c:\users\jason\documents\visual studio 2017\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(16): error C2337: 'f': attribute not found
1>c:\users\jason\documents\visual studio 2017\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp(16): error C2059: syntax error: '='
Run Code Online (Sandbox Code Playgroud)

我也尝试将编译器开关设置为std:/ c ++最新的项目属性,但仍然没有骰子.我做错了什么?

ild*_*arn 5

  1. 正如@KerrekSB在评论中指出的那样,auto [i, f] = s();应该是auto [i, f] = s;.
  2. 你说你正在使用VS2017,但后来表明你的编译器版本是19.00.24218,实际上是VS2015 Update 3 ... VC++不支持结构化绑定,直到VS201 7 Update 3(编译器v19.11.25503) - 你需要更新(或修复项目设置和/或构建环境,以便使用正确的编译器).