not_fn
はヘッダーファイル<functional>
で定義されている。
template <class F> unspecified not_fn(F&& f);
関数オブジェクトf
に対してnot_fn(f)
を呼び出すと、戻り値として何らかの関数オブジェクトが返ってくる。その関数オブジェクトを呼び出すと、実引数をf
に渡してf
を関数呼び出しして、戻り値をoperator !
で否定して返す。
int main()
{
auto r1 = std::not_fn( []{ return true ; } ) ;
r1() ; // false
auto r2 = std::not_fn( []( bool b ) { return b ; } ) ;
r2(true) ; // false
}
すでに廃止予定になったnot1
, not2
の代替品。