rosevehif
题目如下:
首先看函数名也知道是逆序传入的参数包,主要是分析代码。
考虑以下调用:
对于
std::common_type_t
用于寻找传入类型的公共类型,这里传入的是 3个 int 以及 1个 double 类型参数,故 res 的类型是 std::vector<double>
对于
首先定义一个 bool 变量,单纯用于后续包展开。
观察折叠表达式,按照国王的教诲,观察到 = ... =
,其次 ...
在参数包 args
左侧,故该表达式是二元左折叠表达式。
展开后大致为:
考虑 求值顺序,
对于 ,
运算符,从左到右求值,这里只是 push_back(arg)
并且返回 false 给左侧整体进行赋值。
对于 =
运算符,右侧的值计算和副作用先于左侧。所以该表达式整体也从右侧开始执行,按传入的参数包逆序 push_back
入 res
。
最后的输出是:
Last updated