1. 程式人生 > >Qt下關於tuple用法 ”too many arguments“警告解釋

Qt下關於tuple用法 ”too many arguments“警告解釋

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國內用的人相較於國外還是少,許多文件都還是英文的,建議以後有問題還是問谷哥吧。