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

相关推荐
会编程的吕洞宾5 小时前
RAG检索质量怎么评估?3个指标+LLM裁判实战
java·开发语言·人工智能·后端
FLJwu5 小时前
运动相机采购实战|第四篇(终章):一张清单走完选型全流程,把风险拦在源头
c语言·开发语言·数码相机·运动相机·oem 量产
收纳过往5 小时前
数据库加索引的时机:慢查询日志说话
android·开发语言·数据库·python·低代码·rxjava
ShineWinsu6 小时前
对于Qt:QWidget通用属性的解析—上
数据库·qt·microsoft·面试·gui·属性·qwidget
蘑菇小白7 小时前
Linux多线程开发
linux·开发语言·线程
青少儿编程课堂7 小时前
蓝桥杯青少组 + 全国青少年信息素养大赛 + 电子学会图形化考级|校园推箱子大挑战解析
c++·python·算法·bfs·信息学竞赛
2601_966949657 小时前
Python 实战:如何统计五档盘口买卖盘总挂单量?附计算公式与代码
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
全栈陈序员7 小时前
【Python】基础语法入门(二十九)—— 正则表达式实战:文本处理利器
开发语言·人工智能·python·正则表达式
Wang's Blog7 小时前
Java 项目实战: 交友项目 - 发布评论
java·开发语言·交友
屈冠成7 小时前
ShopXO商城系统测试报告
开发语言·spring·maven·lua