簡體   English   中英

在Visual Studio 2017中使用C ++ 17``結構化綁定''功能

[英]Using c++17 'structured bindings' feature in visual studio 2017

我正在嘗試在代碼中利用某些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;
}

從理解這個文章,這是我會怎么用新的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: '='

我還嘗試在項目屬性內將編譯器開關設置為std:/ c ++ latest,但仍然沒有問題。 我做錯了什么?

  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)之前不支持結構化綁定-您需要更新(或修復您的項目設置和/或構建環境,以便使用正確的編譯器)。

只快速瀏覽了您鏈接的頁面,但看起來應該像這樣:

    #include <iostream>

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

int main()
{
    S s(); <--- You were missing the ()

    auto [i, f] = s();

    std::cin.get();

    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM