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

NoS*_*tAl 0 c++ lambda boost c++11

前一阵子我偶然发现了以下一行代码:

 return accumulate(s, s + size, char(), (_1 ^ _2));
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*vid 6

使用硬编码类型......

return accumulate(s, s+size, char(), [](char l, char r){ return l ^ r; });
Run Code Online (Sandbox Code Playgroud)

当允许通用lambda时(C++ 14)......

return accumulate(s, s+size, char(), [](auto l, auto r){ return l ^ r; });
Run Code Online (Sandbox Code Playgroud)

现在,std :: bit_xor ......

return accumulate(s, s+size, char(), bit_xor<char>());
Run Code Online (Sandbox Code Playgroud)