2014-09-25 10 views
0

나는 QVariant의 값을 반환하는 아주 간단한 함수를 가지고 있습니다. 그것은 개인 QVariant 데이터의 값을 반환하는 클래스의 부분 :템플릿에서 템플릿을 호출하는 MinGW

template <typename T> 
QVariantReference<T>::operator T() const 
{ 
    return this->data.value<T>(); 
} 

나는 MSVC2013 컴파일러로 컴파일하면, 그것은 잘 작동을하지만, 내가는 MinGW이 작업을 수행하려고하면, 내가 얻을 다음과 같은 오류 :

C : \ C++ 라이브러리 \ Qt를 \ 직장 \ QXmlDataSaver \ QXmlDataSaver \ qxmldatasaver.h : 34 : 대해서는 2 : '>'토큰 이미 확인
return this->data.value<T>();

전과 예상되는 주요 표현 QVariant- Documentation하지만이 함수와 관련된 컴파일러에 대한 힌트는 없습니다. 템플릿이 아닌 함수에서 아무런 문제없이 QVariant::value<T>()으로 전화 할 수 있습니다.

누구나 이유는 무엇일까요? 아니면 MinGW에 대한 정상적인 동작입니까? 당신의 도움을 주셔서 감사합니다.

답변

1

value템플릿입니다. 그는 모르는 사이에 덜 연산자로 첫 번째 <을 구문 분석하려고합니다. MSVC는 해당 규칙을 무시하며 여기에 표준을 따르지 않습니다.

template <typename T> 
QVariantReference<T>::operator T() const 
{ 
    return this->data.template value<T>(); 
}