トップ回答者
構造化束縛が使えません

質問
-
VC++2019で、構造化束縛なるものを勉強しようと思っているのですが、コンパイルが通りません。
std::pair<int, std::string> f() { return { 3, "Hello" }; } int main() { auto [id, message] = f(); }
コンパイルのオプション
/JMC /permissive- /GS /W3 /Zc:wchar_t /ZI /Gm- /Od /sdl /Fd"x64\Debug\vc142.pdb" /Zc:inline /fp:precise /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MDd /std:c++17 /FC /Fa"x64\Debug\" /EHsc /nologo /Fo"x64\Debug\" /Fp"x64\Debug\Project_const_reference.pch" /diagnostics:column
なにが問題なのかがわかりません。
回答
-
あれ? コマンドラインを見る限りでは、「/std:c++17」フラグは既に付与されているように見えるのですけれどね。
プロジェクトのプロパティを開き、[構成プロパティ]-[C/C++]-[言語] の [C++ 言語標準] が「ISO C++17 標準 (/std:c++17)」になっているかどうかを確認してみてください。
また、画面上部の [構成] と [プラットフォーム] の組み合わせも確認しておいてください。
たとえば Debug 構成だけが /std:c++17 になっていて、Release 構成が /std:c++14 になっていた場合には、単体ビルドでは正常でも、バッチビルド時にエラー検出されるかと思います。
- 回答としてマーク Brillia 2020年11月10日 0:21
すべての返信
-
あれ? コマンドラインを見る限りでは、「/std:c++17」フラグは既に付与されているように見えるのですけれどね。
プロジェクトのプロパティを開き、[構成プロパティ]-[C/C++]-[言語] の [C++ 言語標準] が「ISO C++17 標準 (/std:c++17)」になっているかどうかを確認してみてください。
また、画面上部の [構成] と [プラットフォーム] の組み合わせも確認しておいてください。
たとえば Debug 構成だけが /std:c++17 になっていて、Release 構成が /std:c++14 になっていた場合には、単体ビルドでは正常でも、バッチビルド時にエラー検出されるかと思います。
- 回答としてマーク Brillia 2020年11月10日 0:21