C++17中的折叠参数具有左折叠和右折叠查看下面两段代码
#include<iostream>
template<typename ...T>
int sum(T ... ts)
{
return (...+ts);
}
int main()
{
std::cout << sum(1,2,3);
return 0;
}
计算值等于6
使用右折叠
#include<iostream>
template<typename ...T>
int sum(T ... ts)
{
return (ts + ...);
}
int main()
{
std::cout << sum(1,2,3);
return 0;
}
计算值依然等于6
但是当使用减法时就会出现不同
#include<iostream>
template<typename ...T>
int min(T ... ts)
{
return (ts - ...);
}
int main()
{
std::cout << min(1,2,3);
return 0;
}
计算后值为2 实际计算的是1-(2-3) = 2
#include<iostream>
template<typename ...T>
int min(T ... ts)
{
return (ts - ...);
}
int main()
{
std::cout << min(1,2,3);
return 0;
}
结果为-4 计算过程为(1-2)-3 = -4