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

相关推荐
郝学胜-神的一滴1 分钟前
OpenGL状态机与对象管理:优化图形渲染的高效方法
开发语言·c++·程序人生·算法·图形渲染
小沈熬夜秃头中୧⍤⃝19 分钟前
Python 基础语法(二):流程控制语句详解
开发语言·数据库·python
MSXmiao33 分钟前
2048小游戏
数据结构·c++·算法
钮钴禄·爱因斯晨1 小时前
数据结构 | 树的秘密
c语言·开发语言·数据结构
chian-ocean1 小时前
C++ 网络编程入门:TCP 协议下的简易计算器项目
网络·c++·tcp/ip
黄晓魚1 小时前
open3d python 鞋底点云点胶路径识别
开发语言·python·open3d
江公望1 小时前
ubuntu 20.04 C和C++的标准头文件都放在哪个目录?
c++·ubuntu
Antonio9151 小时前
【音视频】WebRTC 一对一通话-信令服
c++·websocket·音视频·webrtc
C4程序员1 小时前
北京JAVA基础面试30天打卡02
java·开发语言·面试
cxyll12342 小时前
Python接口自动化测试之之request
开发语言·python