C++ 二元对折
示例
二元褶皱基本上是一元褶皱,带有一个额外的论点。
有两种二进制折叠:
BinaryLeftFold--(valueop...oppack)扩展如下:
(((ValueopPack1)opPack2)op...)opPackN
二进制右折(packop...opvalue)-扩展如下:
Pack1op(...op(Pack(N-1)op(PackNopValue)))
这是一个例子:
template<typename... Ts> int removeFrom(int num, Ts... args) { return (num - ... - args); //二进制左折 //请注意,不能使用二进制右折 //由于运算符缺乏关联性- } int result = removeFrom(1000, 5, 10, 15); //结果为1000-5-10-15=970