最終更新日時:
が更新

履歴 編集

The Boost Lambda Library

Copyright (c) 1999-2004 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.


Table of Contents

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