【发布时间】:2013-04-22 02:56:07
【问题描述】:
不久前,我偶然发现了一个 以下代码行:
return accumulate(s, s + size, char(), (_1 ^ _2));
它使用了 boost headers,但我一直认为它非常非常优雅(注意 lambda 没有命名输入参数,所以它非常短。:) 请注意,我知道 C++11 有 lambda 函数,这不是关于 lambdas,而是关于这个漂亮的简短语法。
【问题讨论】:
-
我不确定你的问题,
^可以重载所以有可能。 -
^是什么意思?它在 C 和 C++ 中是什么意思,或者在其他语言中是什么意思? -
代码执行异或校验和:),所以^是正常的^ ... ^_^
-
您愿意在其背后投入多少机器?显然,你不能开箱即用。但是你显然也可以像 Boost.Lambda 那样构建一个处理它的库。
-
这些用于
std::bind,它允许您将参数重新排列(或硬编码)到预先存在的仿函数。它不提供 Boost.Lambda 提供的动态自定义仿函数生成。它在这里的使用看起来与您提供的示例不同。这将非常不吸引人,也没有必要,因为您可以只传递一个std::bit_xor对象。无需重新排列参数。