![]() |
Home | Libraries | People | FAQ | More |
同様に対応するヘルパ関数も提供する。
このライブラリのネゲータは標準バージョンを二つの方法で改良する。
使い型は標準ネゲータと同様である。例えば、
bool bad(const Foo &foo) { ... } ... std::vector<Foo> c; ... std::find_if(c.begin(), c.end(), boost::not1(bad));
C++ 標準
template <class Predicate> class unary_negate : public unary_function<typename Predicate::argument_type,bool> { public: explicit unary_negate(const Predicate& pred); bool operator()(const typename Predicate::argument_type& x) const; };
Predicate の
しかしながら、もし代わりに
つまり
Boost の
bool operator()(typename call_traits<typename Predicate::argument_type>::param_type x) const
我々は望ましい結果を引き出した - 参照の参照を生み出すことなく、効率性 を得たのだ。実のところ、実際の宣言は関数オブジェクト特性を使うためもう少 し複雑である。しかし効果は同様である。
この関数オブジェクト特性の両方と call traits はこの改良を実現するため
に使われる関数オブジェクト特性と call_traits の両方が部分特殊化版に頼って
いるので、この改良は部分特殊化版の機能を持つコンパイラでのみ有効である。
そうでないコンパイラでは、このライブラリのネゲータは標準内のそれらと非常
に似た振るまいをする - 関数に適合するために
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>.
オリジナルの、及びこの著作権表示が全ての複製の中に現れる限り、この文書の 複製、利用、変更、販売そして配布を認める。このドキュメントは「あるがまま」 に提供されており、いかなる明示的、暗黙的保証も行わない。また、 いかなる目的に対しても、その利用が適していることを関知しない。