C++模板知识点3『std::initializer_list初始化时逗号表达式的执行顺序』

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

相关推荐
CryptoRzz13 分钟前
日本股票 API 对接实战指南(实时行情与 IPO 专题)
java·开发语言·python·区块链·maven
yugi98783814 分钟前
基于M序列的直扩信号扩频码生成方法及周期长码直扩信号的MATLAB实现方案
开发语言·matlab
乾元21 分钟前
基于时序数据的异常预测——短期容量与拥塞的提前感知
运维·开发语言·网络·人工智能·python·自动化·运维开发
江上清风山间明月22 分钟前
使用python将markdown文件生成pdf文件
开发语言·python·pdf
j_xxx404_25 分钟前
C++算法入门:二分查找合集(二分查找|在排序数组中查找元素的第一个和最后一个位置)
开发语言·c++
ss27328 分钟前
阻塞队列:ArrayBlockingQueue如何用Lock与Condition实现高效并发控制
开发语言·python
lizz3130 分钟前
C++操作符重载深度解析
java·c++·算法
CodeCraft Studio31 分钟前
Vaadin 25 正式发布:回归标准Java Web,让企业级开发更简单、更高效
java·开发语言·前端·vaadin·java web 框架·纯java前端框架·企业级java ui框架
Shirley~~34 分钟前
PPTist 幻灯片工具栏Toolbar部分
开发语言·前端·javascript
|晴 天|35 分钟前
Promise 与 async/await 错误处理最佳实践指南
开发语言·前端·javascript