【问题标题】:MinGW calling template from template [duplicate]MinGW从模板调用模板[重复]
【发布时间】:2014-09-25 22:40:57
【问题描述】:

我有一个非常简单的函数,它只返回 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: '>' 标记之前的预期主表达式
return this-&gt;data.value&lt;T&gt;();

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

有人知道原因可能是什么吗?或者这是 MinGW 的正常行为?感谢您的帮助。

【问题讨论】:

    标签: c++ qt templates mingw32 qvariant


    【解决方案1】:

    你必须告诉编译器value 是一个成员模板。默认情况下,它不会假定它是,而是将第一个 &lt; 解析为小于运算符。 MSVC 实际上无视该规则并且不符合标准。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-10
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      相关资源
      最近更新 更多