Visual Studio C++ 17 사용하기
Visual studio 2017에서 C++ 17문법을 쓰게 되면 컴파일이 아래와 같은 에러가 출력된다.
Severity Code Description Project File Line Suppression State
Error C1189 #error: class template variant is only available with C++17. ConsoleApplication1 c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.14.26428\include\variant 16
이는 말그대로 Visual Studio 2017에서 아직 C++17문법이 가능하지않다는 것이다.
하지만 en.cppreference.com 에 설명에 따르면 C++17의 문법을 지원한다.
왜 안되는건가 라고 이야기하고싶지만 MSDN에서는 특별한 인자를 주어야한다고한다. (링크 https://docs.microsoft.com/en-gb/cpp/build/reference/std-specify-language-standard-version?view=vs-2017)
프로젝트 속성-> C/C++->commandLine 에 들어가 아래와 같이/std:c++17이나 /std:c++latest 을 적어둔다.
해당 옵션을 주고 아래와같이 간단한 예제를 돌려보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <iostream> #include <algorithm> #include <vector> #include <windows.h> #include <utility> #include <variant> int main() { std::variant<int, double> b; b = 30.0; int a = std::get<int>(b); std::cout << a << std::endl; } | cs |
잘못된 예제이긴 하지만 C++17이 작동하는걸 볼수있다.