C++ BOOST The Boost Lambda Library

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.

オリジナルの、及びこの著作権表示が全ての複製の中に現れる限り、この文書の 複製、利用、変更、販売そして配布を認める。このドキュメントは「あるがまま」 に提供されており、いかなる明示的、暗黙的保証も行わない。また、 いかなる目的に対しても、その利用が適していることを関知しない。


Table of Contents

1. In a nutshell
2. Getting Started
2.1. Installing the library
2.2. Conventions used in this document
3. Introduction
3.1. Motivation
3.2. Introduction to lambda expressions
4. Using the library
4.1. Introductory Examples
4.2. Parameter and return types of lambda functors
4.3. About actual arguments to lambda functors
4.4. Storing bound arguments in lambda functions
5. Lambda expressions in details
5.1. Placeholders
5.2. Operator expressions
5.3. Bind expressions
5.4. Overriding the deduced return type
5.5. Delaying constants and variables
5.6. Lambda expressions for control structures
5.7. Exceptions
5.8. Construction and destruction
5.9. Special lambda expressions
5.10. Casts, sizeof and typeid
5.11. Nesting STL algorithm invocations
6. Extending return type deduction system
7. Practical considerations
7.1. Performance
7.2. About compiling
7.3. Portability
8. Relation to other Boost libraries
8.1. Boost Function
8.2. Boost Bind
9. Contributors
A. Rationale for some of the design decisions
1. Lambda functor arity
Bibliography

1. In a nutshell

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アルゴリズムを呼出す式の中で直接定義することを可能にすることである。