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<intdouble> b;
    b = 30.0;
 
    int a = std::get<int>(b);
 
    std::cout << a << std::endl;
 
 
 
 
 
}
 
cs

잘못된 예제이긴 하지만 C++17이 작동하는걸 볼수있다.

카테고리: C++

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다