MinGW从模板调用模板

时间:2014-09-25 22:40:58

标签: c++ qt templates mingw32 qvariant

我有一个非常简单的函数,只返回QVariant的值。它是返回私有QVariant数据值的类的一部分:

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

如果我使用MSVC2013编译器编译,它只是工作正常,但如果我尝试使用MinGW,我收到以下错误:

C:\ C ++ Libraries \ Qt \ workplace \ QXmlDataSaver \ QXmlDataSaver \ qxmldatasaver.h:34:Fehler:在&#39;&gt;&#39;之前预期的主要表达式令牌
return this->data.value<T>();

我已经检查了QVariant-Documentation,但没有关于此功能的编译器的提示。我可以毫无问题地在非模板函数中调用QVariant::value<T>()

任何人都知道原因是什么?或者这是MinGW的正常行为?谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

您必须告诉编译器value模板的成员。它默认情况下不会假设它是,而是将第一个<解析为less-than运算符。 MSVC实际上无视该规则并且不符合标准。

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