oz1*_*1cz 14 c++ fold-expression c++17
根据N4295, C++ 17将允许我计算未知数量的参数的总和,从而:
template<typename ... T>
int sum(T...t)
{
return (... + t);
}
Run Code Online (Sandbox Code Playgroud)
该文档进一步指出我可以使用诸如==或>之类的运算符而不是+.任何人都能想出一个合理的例子,当我想在这样的结构中使用==或>时?
(我意识到人们可以定义==和>为奇怪的课程做一些奇怪的事情,但肯定会违反良好的做法.写作a > b > c > d
几乎不是一个好主意,是吗?)
Mor*_*enn 10
如果链接比较在Python中处理,我将是一个有趣的功能,其中a < b < c
解释为a < b and b < c
单个评估b
.不幸的是,在C++中并非如此,即使在奇怪的情况下,折叠比较运算符确实没有意义.
需要注意的是有一个建议(P0313),以实际删除运营商==
,!=
,<
,>
,<=
并>=
从折表情完全处理的运营商.2016年6月在奥卢召开的委员会会议上对此进行了讨论.删除的动机相当简短:
比较运算符在fold表达式中没有多大意义; 它们扩展为具有惊人效果的表达式,因此仅对dsl-metaprogrammers有用.[...]能够修复像这样的表达式会很好
a < b < c
.这需要一台时间机器.不重复折叠表达式的问题似乎是可行的.
那说提案被拒绝了.