2014-09-25 63 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:Fehler:前 '>' 令牌
return this->data.value<T>();

我已经检查了预期基本表达式QVariant - 文档,但没有关于此功能的编译器暗示。我可以在没有任何问题的情况下在非模板函数中调用QVariant::value<T>()

任何一个想法可能是什么原因?或者这是MinGW的正常行为吗?谢谢你的帮助。

回答

1

您必须告诉编译器value是成员模板。他不知道并试图将第一个<解析为不足的运算符。 MSVC忽视该规则,并不符合标准。

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