Qt 5.14.2向std::map插入元素时出现语义问题如何解决?
Qt Creator std::map插入操作语义误报问题
我在Windows 10系统中使用Qt 5.14.2(MSVC2017编译器),向std::map插入数据时最初以为出现编译错误,相关代码如下:
#include "mainwindow.h" #include <map> #include <utility> #include <QApplication> int main(int argc, char *argv[]) { QApplication app(argc, argv); MainWindow w; w.show(); std::map<int, int> mymap; auto a = std::make_pair(5,6); // 无报错提示 // 语义问题:未找到匹配的insert调用成员函数 mymap.insert(std::make_pair(1,2)); // 语义问题:未找到匹配的insert调用成员函数 mymap.insert(a); mymap.insert({3, 4}); // 无报错提示 return app.exec(); }
我此前使用Qt 5.4.2(MSVC2012编译器)编译相同代码没有任何问题。
后续核实我之前判断有误,该问题并非编译错误,仅为Qt Creator红色圈注的语义提示,完全不影响程序运行结果,Qt 5.4.2版本不存在该语义误报。
该问题属于Qt Creator自带静态语义分析模块的已知缺陷,和实际编译器的语法支持无关,同类常见误报还包括提示std命名空间下不存在cout、误报代码永远不会执行、未识别UI类声明等,都不会影响实际编译运行的结果。
内容的提问来源于stack exchange,提问作者cd-00
相关产品推荐
相关产品推荐

