2014-09-25 62 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>(); 
}