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中打印顺序不一致,欢迎知道的大佬指点一下。