c++boost.gif (8819 bytes)HomeLibrariesPeopleFAQMore

Boost.Function

Douglas Gregor

Permission to copy, use, sell and distribute this software is granted provided this copyright notice appears in all copies. Permission to modify the code and to distribute modified code is granted provided this copyright notice appears in all copies, and a notice that the code was modified is included with the copyright notice.

This software is provided "as is" without express or implied warranty, and with no claim as to its suitability for any purpose.

Table of Contents

Introduction
History & Compatibility Notes
Tutorial
Basic Usage
Free functions
Member functions
References to Functions
Reference
Definitions
Header <boost/function.hpp>
Frequently Asked Questions
Miscellaneous Notes
Boost.Function vs. Function Pointers
Performance
Function object wrapper size
Copying efficiency
Invocation efficiency
Combatting virtual function "bloat"
Acknowledgements
Testsuite
Acceptance tests
Negative tests

Introduction

Boost.Function ライブラリに含まれるのは、関数オブジェクトのラッパとなるクラステンプレート群である。 Boost.Function の概念はコールバックを一般化したものだ。 Boost.Function は以下の点で関数ポインタと共通の特徴をもっている。 1 つは、何らかの実装によって呼び出される「呼び出しのインタフェース」 (例: 2 つの int 型引数を取り、 float を返す関数) を定義している事。もう 1 つは、呼び出される実装をプログラム実行中に変更できる事だ。

一般に、遅延呼び出しやコールバックを実現するために関数ポインタを使うあらゆる場面で、代わりに Boost.Function を使用できる。そして、それによって呼ばれる側の実装はぐっと自由になる。呼ばれる側にはあらゆる「互換性のある」関数オブジェクト (や関数ポインタ) が指定できる。「互換性がある」とは、 Boost.Function に渡した引数が、対象となる関数オブジェクトの引数に変換できるという事だ[訳注1]

[訳注1] 戻り値にも互換性が必要。

Last revised: February 19, 2003 at 22:46:09 GMT