不久前,我偶然发现了以下代码行:
return accumulate(s, s + size, char(), (_1 ^ _2));
它使用了 boost 标头,但我一直认为它非常非常优雅(注意 lambda 没有命名输入参数,所以它非常短。:) 请注意,我知道 C++11 有 lambda 函数,这是不是关于 lambdas,而是关于这个漂亮的简短语法。
使用硬编码类型...
return accumulate(s, s+size, char(), [](char l, char r){ return l ^ r; });
当允许泛型 lambda时 (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>());
没有 Boost 的唯一方法是重新发明创建它的 Boost 组件。如果没有 Boost 组件的实现,你怎么可能拥有 Boost 组件的语法?
语言解决方案是 lambda,如果您不喜欢它们,那么是时候使用 Boost 或窃取其中的特定部分了。