c++17的fold expression让我们处理变参更简单,代码也会变得更加简洁,比如我们要打印所有参数:
template<typename... Args>
void print(Args... args) {
((std::cout << args << ' '), ...);
std::cout << "\n";
}
print("a", "b", "c");
//将输出a b c复制
这很简单,如果我们想从右边而不是左边开始打印这些参数该怎么办?对于fold expression来说这很简单:
template<typename... Args>
void print(Args... args) {
int dummy;
((std::cout << args << ' ', dummy) = ... = 0);
std::cout << "\n";
}
print("a", "b", "c");
//将输出c b a复制
是不是有点神奇!稍微解释一下这个反向打印参数的代码,经过fold expression展开后是这样的:
(f(a, dummy)=f(b, dummy)=f(c, dummy))
复制
这个表达式会先从最右边算起,从而实现了反向打印参数。C++17对 x = y;的计算顺序做了保证,即先计算(y),再计算(x), 最后计算x = y;
有趣的Modern C++, have fun!
出自:purecpp 欢迎关注微信公众号: purecpp
地址: www.purecpp.org
转载请注明出处!
文章转载自purecpp,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
2254次阅读
2025-04-09 15:33:27
数据库国产化替代深化:DBA的机遇与挑战
代晓磊
1044次阅读
2025-04-27 16:53:22
2025年3月国产数据库大事记
墨天轮编辑部
958次阅读
2025-04-03 15:21:16
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
657次阅读
2025-04-10 15:35:48
数据库,没有关税却有壁垒
多明戈教你玩狼人杀
524次阅读
2025-04-11 09:38:42
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
507次阅读
2025-04-14 09:40:20
最近我为什么不写评论国产数据库的文章了
白鳝的洞穴
464次阅读
2025-04-07 09:44:54
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
419次阅读
2025-04-17 17:02:24
天津市政府数据库框采结果公布,7家数据库产品入选!
通讯员
395次阅读
2025-04-10 12:32:35
2025年4月国产数据库中标情况一览:4个千万元级项目,GaussDB与OceanBase大放异彩!
通讯员
380次阅读
2025-04-30 15:24:06