c++ - std type_traits 与 Qt type_traits 冲突

标签 c++ qt c++11 typetraits

我安装了 Qt 5.8,但出现此错误。 我的 pro 文件中也有 CONFIG += c++14,我也尝试过使用 c++11。

/usr/include/x86_64-linux-gnu/qt5/QtCore/qtimer.h:106: error: ‘is_same’ is not a member of ‘QtPrivate’!QtPrivate::is_same<const 

还有

/usr/include/c++/5/type_traits:958: note:   ‘std::is_same’
     struct is_same;

最佳答案

根据@DanielJour 对问题的评论,我一直在 Qt git 存储库中进行一些挖掘。

查看文件 qtimer.h 的历史并将其与您的错误消息相关联(qtimer.h:106: error: 'is_same' is not a member...),我发现 this commit将对 is_same 的调用从第 106 行移动到第 112 行(并且再也没有回来),因此您在 提交之前包含了一个 qtimer.h .

该提交是从 2016-01-15 开始的,它包含在 Qt 5.7 之后。

所以我的猜测是您已经安装了几个不同版本的 Qt,并且您的程序以某种方式包含旧的 header ,而不是来自 Qt 5.8 的 header 。

导致我得出该结论的附加说明是您的头文件位于 /usr/include/x86_64-linux-gnu/qt5/ 中,但通常安装它的位置是/usr/include/qt/usr/include/qt5。你的看起来像一个 multilib 或交叉编译器路径......

关于c++ - std type_traits 与 Qt type_traits 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43157738/

相关文章:

c++ - 如何为QXmlStreamWriter/Reader序列化QColor、QSize、QPoint

qt - 如何让 Qt 小部件忽略在父小部件上设置的样式表?

c++11 - 检测两种类型是否是同一类模板的特化?

c++ - 为什么要在单例中删除 move 构造函数和 move 赋值运算符?

types - nullptr 的强类型化?

c++ - clang 8.0 的编译器错误 -- 段错误 -- 在 Macos Sierra 10.12.3 上

c++ - 用于 HTTP 编程的 C/C++ 库

c++ - 如何在 C++ 的 MFC 窗体中访问全局变量

c++ - 如何将由制表符分隔的文件读入结构

c++ - Qt - QWebView问题