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

相关推荐
道清茗10 分钟前
【RH294知识点汇总】第 3 章 《 管理变量和事实 》1
开发语言·python
星空椰11 分钟前
JavaScript基础:运算符和流程控制
开发语言·javascript·ecmascript
say_fall13 分钟前
有关算法的简单数学问题
数据结构·c++·算法·职场和发展·蓝桥杯
Halo_tjn13 分钟前
Java 接口的定义重构学生管理系统
java·开发语言·算法
阿Y加油吧20 分钟前
栈的经典应用:从「有效括号」到「寻找两个正序数组的中位数」深度解析
开发语言·python·算法
xiaotao13126 分钟前
阶段零:Python 安装与虚拟环境(venv / Conda)
开发语言·人工智能·python·conda
dr_yingli30 分钟前
fMRI(4-1)统计分析报告生成器说明
开发语言·matlab
m0_7167652341 分钟前
数据结构--顺序表的插入、删除、查找详解
c语言·开发语言·数据结构·c++·学习·算法·visual studio
Halo_tjn43 分钟前
Java 抽象类 知识点
java·开发语言·算法
say_fall43 分钟前
滑动窗口算法
数据结构·c++·算法