gpt4 book ai didi

C++一元右折叠与带逗号运算符的一元左折叠

转载 作者:太空狗 更新时间:2023-10-29 19:39:11 25 4
gpt4 key购买 nike

为什么逗号分隔的一元左折叠产生与右折叠相同的结果?

Live code

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);
}

输出:

1234
1234

不应该是:

4321
1234

?

最佳答案

左折叠与右折叠是((a,b),c)(a,(b,c))之间的区别,但它们恰好使用内置的 , 运算符时效果相同:它们首先评估 a,然后是 b,最后是 c .要查看差异,您需要使用具有自定义重载 , 运算符的类型。

语法可能看起来好像会反转参数,但不,这不会发生。

关于C++一元右折叠与带逗号运算符的一元左折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49859514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com