版权所有 © 1999-2004 Jaakko Järvi,Gary Powell
使用、修改和分发受 Boost 软件许可证 1.0 版的约束。(请参阅随附文件 LICENSE_1_0.txt
或在 https://boost.ac.cn/LICENSE_1_0.txt 处查看副本)
Boost Lambda 库(以下简称 BLL)是一个 C++ 模板库,它为 C++ 实现了一种 lambda 抽象形式。该术语源自函数式编程和 lambda 演算,其中 lambda 抽象定义一个未命名的函数。BLL 的主要动机是为 STL 算法提供灵活便捷的方法来定义未命名的函数对象。在解释该库是什么时,一行代码胜过千言万语;以下行输出一些 STL 容器 a
的元素,并用空格分隔
for_each(a.begin(), a.end(), std::cout << _1 << ' ');
表达式 std::cout << _1 << ' '
定义一个一元函数对象。变量 _1
是此函数的参数,即实际参数的 占位符。在 for_each
的每次迭代中,都会使用 a
的一个元素作为实际参数调用该函数。此实际参数将替换占位符,并计算函数的 “主体”。
BLL 的本质是允许您直接在 STL 算法的调用站点定义小型未命名的函数对象,例如上面的那个。
[STL94] 标准模板库。惠普实验室。1994。 www.hpl.hp.com/techreports 。
[SGI02] SGI 标准模板库。2002。www.boost.org/sgi/stl/。
[Jär00] Lambda 库:C++ 中的 Lambda 抽象。图尔库计算机科学中心。技术报告。378。2000。www.tucs.fi/publications。
[Jär01] Lambda 库:C++ 中的 Lambda 抽象。第二届 C++ 模板编程研讨会。坦帕湾,OOPSLA'01。。2001。www.oonumerics.org/tmpw01/。
[tuple] Boost 元组库。www.boost.org/libs/tuple/doc/tuple_users_guide.html 。2002。
[type_traits] Boost type_traits。www.boost.org/libs/type_traits/ 。2002。
[ref] Boost ref。www.boost.org/libs/bind/ref.html 。2002。
[bind] Boost Bind 库。www.boost.org/libs/bind/bind.html 。2002。
[function] Boost 函数库。www.boost.org/libs/function/ 。2002。
[fc++] FC++ 库:C++ 中的函数式编程。yanniss.github.io/fc++/ 。2002。