Copyright (C) 1999-2002 Jaakko Järvi, Gary Powell
The Boost Lambda Library is free software; Permission to copy, use, modify and distribute this software and its documentation is granted, provided this copyright notice appears in all copies.
Japanese Translation Copyright (C) 2003 Takuo DOI<takuo1@is.s.u-tokyo.ac.jp>.
Table of Contents
Boost Lambda Library(以降 BLL )は C++ においての λ抽象を実装した C++ のテンプレートライブラリである。 この言葉は関数型言語やλ計算に由来し、そこではλ抽象は無名の関数を定義する。 BLLの主な動機はSTLのアルゴリズムのための無名の関数オブジェクトを定義する柔軟で簡便な方法を提供することである。 このライブラリがどんなものであるかは、言葉を並べたてるより簡単なコードを見るほうが理解しやすい。 次の一行はあるSTLコンテナ a の要素を空白で区切って出力する。
for_each(a.begin(), a.end(), std::cout << _1 << ' ');std::cout << _1 << ' 'は単項関数オブジェクトを定義している。 変数_1はこの関数の仮引数であり、実引数のためのプレースホルダーである。 for_eachの繰り返しのたびに、この関数はaの一つの要素を実引数として呼出される。 この実引数はプレースホルダーとして抽象化され、この関数の ‘本体’ が評価される。
BLLの本質は上にあげたような小さな無名の関数オブジェクトを、STLアルゴリズムを呼出す式の中で直接定義することを可能にすることである。