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

相关推荐
小龙报几秒前
【数据结构与算法】单链表核心精讲:从概念到实战,吃透指针与动态内存操作
c语言·开发语言·数据结构·c++·人工智能·算法·链表
m5655bj2 分钟前
通过 C# 设置 Word 文档背景颜色、背景图
开发语言·c#·word
野犬寒鸦2 分钟前
从零起步学习并发编程 || 第二章:多线程与死锁在项目中的应用示例
java·开发语言·数据库·后端·学习
近津薪荼12 分钟前
递归专题(1)——汉诺塔
c++·学习·算法
果粒蹬i13 分钟前
Python + AI:打造你的智能害虫识别助手
开发语言·人工智能·python
蒸蒸yyyyzwd13 分钟前
stl源码剖析迭代器学习笔记
c语言·c++
Big Cole14 分钟前
PHP面试题(Redis核心知识篇)
开发语言·redis·php
红色的小鳄鱼14 分钟前
Vue 教程 自定义指令 + 生命周期全解析
开发语言·前端·javascript·vue.js·前端框架·html
阿钱真强道14 分钟前
09 jetlinks-mqtt-属性主动上报-windows-python-实现
开发语言·windows·python·网络协议
小二·14 分钟前
Go 语言系统编程与云原生开发实战(第7篇)分布式系统核心能力:配置中心 × 链路追踪 × 熔断降级(生产级落地)
开发语言·云原生·golang