2017-11-10 25 views
0

최근에 시각적 스튜디오 2017로 업그레이드되었지만 표준 라이브러리에서 구문 오류가 발생합니다.<ratio> 및 <memory>의 오류가 vs2013에서 vs2017로 업그레이드 된 후

이것은 출력입니다. 내 생각 엔 어떻게 든 컴파일러가 >>이 연산자 생각이다

template<class _R1, 
    class _R2, 
    bool _Sfinae> 
    struct _Ratio_multiply_sfinae<_R1, _R2, _Sfinae, void_t< 
     typename _Ratio_multiply<_R1, _R2>::_Num::type, 
     typename _Ratio_multiply<_R1, _R2>::_Den::type>> 
    { // typename ratio<>::type is unnecessary here 
    typedef ratio< 
     _Ratio_multiply<_R1, _R2>::_Num::value, 
     _Ratio_multiply<_R1, _R2>::_Den::value> type; 
    }; 

을 발생,하지만 테스트 목적으로 > >로 편집 할 수있는

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\ratio(220): error C2947: expecting '>' to terminate template-argument-list, found '<' 
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\ratio(221): error C2226: syntax error: unexpected type 'std::integral_constant<_Ty,_Val>::type' 
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\ratio(221): error C2988: unrecognizable template declaration/definition 
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\ratio(221): error C2059: syntax error: ',' 

이다.

나는 <ratio>을 포함시키지 않았지만, <chrono> 따라서 <mutex>에 사용되는 것으로 생각됩니다.

업데이트 :

난 그냥 컴파일시, InteliSense 전과가 그것에 대해 불평하지 않고 컴파일 한 후 그 장소에 대해 불평하지만, 실현

. 어떻게 든 그것은 컴파일러 설정이 변경된 것 같지만 어떻게 알지 못합니다. 다른 질문은 왜 vs2013에서 작동했는지입니다.

+0

새롭고 깨끗한 프로젝트 (예 : 시스템 헤더 파일과 메인 파일)에서 발생합니까? 그렇지 않으면 프로젝트의 #define이 시스템 헤더 파일에 영향을 미친 것으로 의심됩니다. –

+0

@RichardCritten 깨끗한 프로젝트가 아닙니다. 깨끗한 프로젝트는 지금 당장 나를위한 선택이 될 수 없습니다. 어떤 종류의 정의가이 문제를 일으킬 수 있으므로 내 검색 범위를 좁힐 수 있습니까? – VegaBrothers

+0

미리 컴파일 된 헤더를 사용합니까? 모두 청소하고 다시 만들려고 했습니까? –

답변

0

내가 표준은 당신이 ">>"대 ">>"에 대해 언급 한 문제를 해결하기 C++ 03과 C++ (11) 사이에 변경 생각

당신은 컴파일러 버전을 전환해야 할 수도 있습니다.

+0

'플랫폼 도구 세트'가 'Visual Studio 2017 (v141)'로 설정되어 있지 않습니까? – VegaBrothers

+0

그렇게 생각 하겠지만, 다시 설치할 수 있기 때문에 컴파일러가 코드를 보는 방법을 결정하는 다른 플래그가있을 수 있습니다. 또한 실제로 문제가 있는지 확인해야합니다. 왜 공간을 추가하고 컴파일을 시도 할 수 없습니까? – Carlos

+0

읽기 전용 파일입니다. 내가 그것을 바꿀 때 그것을 구하려고하면 그것을 구하기 위해 묻는다. 그리고 그것은 나에게 도움이되지 않을 것이다. – VegaBrothers