std::initializer_list初始化時逗號表達式的執行順序
在使用Qt Creator4.12.2,Qt5.12.9 MinGW開發的過程中發現了一個奇怪的現象,std::initializer_list<int>
在初始化構造時的執行順序反了,經過一番測試發現,其執行順序可正可反,當然僅限于此開發環境下。
template<typename... Params>
void print(Params... ps) {std::initializer_list<int>{(qDebug() << ps, 1)...};qDebug() << "---------------------";std::initializer_list<int> value{(qDebug() << ps, 1)...};
}調用處的函數為: print(1, 'c', 2.3);
調試輸出順序為:先是2.3 c 1,后是1 c 2.3
這輸出結果令人腦子發懵啊,打開VS2017新建控制臺程序,復制代碼,調試運行,發現輸出順序始終為:1 c 2.3,符合之前認知。
測試圖片合并如下:
不知道為什么Qt中打印順序不一致,歡迎知道的大佬指點一下。