![]() |
Home | Libraries | People | FAQ | More |
このヘッダは以下の関数・クラステンプレートを含む:
Function object traits | 関数オブジェクトや関数の引数型を決定するために使わ
れる。 |
|
---|---|---|
Negators | 標準のセクション 20.3.5 に基づく。 | |
Binders | 標準のセクション 20.3.6 に基づく。 | |
Adapters for pointers to functions | 標準のセクション 20.3.7 に基づく。このライブラリと ともに使用する場合はバインダやネゲータは関数に適合できるので不要 である。しかし、サードパーティのアダプタに必要とされるかもしれない。 | |
Adapters for pointers to member functions | 標準のセクション 20.3.8 に基づく。 |
これらのアダプタの使い方は標準関数オブジェクトアダプタの使い方にとて
もよく似ている。唯一の違いは、
例えば、あなたが
class Person { public: void set_name(const std::string &name); // ... };
あなたは以下のように書くことによって、コレクション c 中の Person の束を改名できる。
std::for_each(c.begin(), c.end(), boost::bind2nd(boost::mem_fun_ref(&Person::set_name), "Fred"));
もし代わりに標準アダプタが使われていれば、このコードは普通、コンパイ
ルに失敗する。それは、
このヘッダと テストプログラム は以下 のコンパイラでコンパイルされる:
Compiler | Comments |
---|---|
Borland C++Builder 4 Update 2 | 既知の問題は無い。 |
Borland C++ 5.5 | 既知の問題は無い。 |
g++ 2.95.2 | 既知の問題は無い。 |
Microsoft Visual C++ Service Pack 3 | コンパイラが部分特殊化版を欠いているため、このライブ
ラリは標準アダプタによって提供されるより、少しだけしか多くの機
能を提供しない。
|
このライブラリの第一目的は、できる限り多くの標準ライブラリの互換性を 持つ、参照の参照問題に対する解である。これによって本や雑誌で読む技術を 今日のたくさんのコンパイラで使うことができる。
長期的には、より良い解は以下のようなものだろう:
Thanks to John Maddock for suggesting the mechanism that allowed the function objects traits to work correctly. Jens Maurer provided invaluable feedback during the formal review process.
Copyright © 2000 Cadenza New Zealand Ltd. Permission to copy, use, modify, sell and distribute this document is granted provided this copyright notice appears in all copies. This document is provided "as is" without express or implied warranty, and with no claim as to its suitability for any purpose.
Revised 28 June 2000
Japanese Translation Copyright (C) 2003 shinichiro.h <g940455@mail.ecc.u-tokyo.ac.jp>.
オリジナルの、及びこの著作権表示が全ての複製の中に現れる限り、この文書の 複製、利用、変更、販売そして配布を認める。このドキュメントは「あるがまま」 に提供されており、いかなる明示的、暗黙的保証も行わない。また、 いかなる目的に対しても、その利用が適していることを関知しない。