C++ 函数可变参实现方法的演进
可变参数函数是接受可变数量参数的函数,在不少场景下,可变参数函数是非常有用的。比如想打印日志时,可以接受任意数量的参数,然后将这些参数拼接输出到控制台,如下:
1 | { |
在C++中,可变参数函数的实现方法也是不断演进的,从最初C风格的可变参数列表,到 C++11 的变参模板,再到 C++17 引入的折叠表达式,见证了 C++ 语言的逐步发展和完善。接下来本文会介绍这三种方式的实现细节以及优缺点。
可变参数函数是接受可变数量参数的函数,在不少场景下,可变参数函数是非常有用的。比如想打印日志时,可以接受任意数量的参数,然后将这些参数拼接输出到控制台,如下:
1 | { |
在C++中,可变参数函数的实现方法也是不断演进的,从最初C风格的可变参数列表,到 C++11 的变参模板,再到 C++17 引入的折叠表达式,见证了 C++ 语言的逐步发展和完善。接下来本文会介绍这三种方式的实现细节以及优缺点。
人工智能在各行各业的应用越来越广泛,法律行业也不例外。作为执业律师,为了看自己能不能被 AI 替代,之前体验过一些 AI 工具。比如最先进的 ChatGPT,当时体验完松了一口气,人工智能离智能还差一个“人工”,自己还是不能被替代的。
最近听说百度法行宝很厉害,今天以婚姻纠纷为例,深度体验了下法行宝,忽然又有点危机感了。之前我已经帮助很多人解决过婚姻纠纷,对离婚案件有一定的经验,今天在这款 AI 工具上,第一次领略到了 AI 的强大。
最近在项目中遇到了一个奇怪的 coredump 问题,排查过程并不顺利。经过不断分析,找到了一个复现的步骤,经过合理猜测和谨慎验证,最终才定位到原因。
复盘下来,发现这类 coredump 问题确实比较罕见,排查起来也不是很容易。只有项目代码编译依赖管理不是很合理的时候,才可能出现。另外,在复盘过程中,对这里的 coredump 以及 C++ 对象内存分布也有了更多理解。于是整理一篇文章,如有错误,欢迎指正。