Qt环境下使用tuple
#include <QCoreApplication>
#include <windows.h>#include <windowsx.h>
#include <QDebug>
#include <QString>
#include <QObject>
#include <QStringList>
#include <string>
#include <tuple>
#include <iostream>
typedef std::tuple<int, double, int, double> Mytuple;
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
Mytuple c0(0, 1, 2, 3);
std::tuple<int,int> t = std::make_tuple(1,2);
std::cout << std::get<0>(t);
std::cout << std::get<1>(t);
return app.exec();
}
正常使用tuple发现问题,只要tuple参数大于一个就会出现警告,但实际运行程序依然可以使用,设置断点调试程序发现tuple里数据正常工作。
经过google有人这样解释:
Qt环境下C++11并没有完善(尽管C++17都……),嗯……所以这并不是使用者我们的问题,也因此才是警告而不是错误。
给我的感觉就像是在vs2012下使用scanf报警告让你使用scanf_s一样,可以用,但是警告就挂在上面。经过几个补丁之后警告就直接变成错误,告诉你必须要使用scanf_s。
嗯,另外据大佬们说Qt国内用的人相较于国外还是少,许多文档都还是英文的,建议以后有问题还是问谷哥吧。