return accumulate(s, s + size, char(), (_1 ^ _2));
它使用了boost标题,但我一直认为它非常非常优雅(请注意,lambda没有命名输入参数,因此它非常短。:) 请注意,我知道C ++ 11有lambda函数,这不是关于lambdas,而是关于这个很好的短语法。
答案 0 :(得分:6)
使用硬编码类型......
return accumulate(s, s+size, char(), [](char l, char r){ return l ^ r; });
允许generic lambdas时(C ++ 14)......
return accumulate(s, s+size, char(), [](auto l, auto r){ return l ^ r; });
目前,std::bit_xor ...
return accumulate(s, s+size, char(), bit_xor<char>());
答案 1 :(得分:3)
没有Boost的唯一方法是重新创建创建它的Boost组件。如果没有Boost组件的实现,你怎么可能有Boost组件的语法?
语言解决方案是lambdas,如果您不喜欢它们,那么是时候使用Boost或者窃取它的特定部分。