参数包的反向累积乘积

时间:2020-01-31 11:14:59

标签: c++ c++17 variadic-templates fold parameter-pack

在c ++ 17中,我们可以轻松地获得参数包的累积乘积,如下所示:

template<typename... Xs> constexpr std::array<int, sizeof...(Xs)+1> cumulative_product(int x0, Xs... xs) {
    return {x0, x0 *= xs ...};
}

constexpr auto cp = cumulative_product(1,2,3,4); // -> 1, 2, 6, 24

是否有类似的优雅方法来获得反序参数的乘积-> [4,12,24,24]?

注意::在原始问题中,我的预期结果错误(24,6,2,1)+问题的措词不正确。因此,在这里无法反转输出数组。

当然要赋予输入参数相同的顺序。

我已经尝试过并使用fold表达式,但是由于我无法在return语句中直接找到一种解决方法,因此它使代码的大小迅速膨胀。

0 个答案:

没有答案