tow*_*120 4 c++ fold-expression c++17
为什么逗号分隔的一元左折产生与右一折相同的结果?
template<class ...Args>
void right_fold(Args... args){
((std::cout << args),...);
}
template<class ...Args>
void left_fold(Args... args){
(...,(std::cout << args));
}
int main()
{
right_fold(1,2,3,4);
std::cout << std::endl;
left_fold(1,2,3,4);
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
1234
1234
Run Code Online (Sandbox Code Playgroud)
不应该是:
4321
1234
Run Code Online (Sandbox Code Playgroud)
?
小智 9
左右VS折叠之间的区别((a,b),c)和(a,(b,c)),但他们拥有完全相同的效果当内置,运营商使用:他们第一次评估a,然后b最后c.要查看差异,您需要使用具有自定义重载,运算符的类型.
语法可能看起来好像会反转参数,但不会,这种情况不会发生.