是否可以在不使用boost的情况下在C ++ 11中编写这样的代码?

时间:2013-04-22 02:56:07

标签: c++ boost c++11 lambda

不久前我偶然发现了一个 以下代码行:

 return accumulate(s, s + size, char(), (_1 ^ _2));

它使用了boost标题,但我一直认为它非常非常优雅(请注意,lambda没有命名输入参数,因此它非常短。:) 请注意,我知道C ++ 11有lambda函数,这不是关于lambdas,而是关于这个很好的短语法。

2 个答案:

答案 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或者窃取它的特定部分。