我的意图是创建一个大小为 n 的函数参数列表,这样我就可以将它传递给一个帮助器,该帮助器使用折叠表达式将这些值递归地相乘。
我对如何使参数列表传递给助手有点困惑。有没有办法在没有包表达式的情况下创建函数参数列表?也许通过创建一个数组或元组?
到目前为止,这是我想出的。
template<typename T, typename N>
T SmoothStart(const T& t, const N& n) {
static_assert(std::is_integral_v<N>, "templatized SmoothStart requires type of N to be integral.");
static_assert(n >= 0, "templatized SmoothStart requires value of N to be non-negative.");
if constexpr (n == 0) {
return 1;
}
if constexpr (n == 1) {
return t;
}
return SmoothStart_helper((t, ...)); //<-- obviously this doesn't work but it would be awesome to have!
}
template<typename T, typename... Args>
T SmoothStart_helper(Args&&... args) {
return (args * ...);
}