最終更新日時:
が更新

履歴 編集

function template
<functional>

std::mem_fn(C++11)

namespace std {
  template <class R, class T>
  unspecified mem_fn(R T::* pm);
}

概要

与えられたメンバ関数を呼び出す Callable オブジェクトを生成して返す。

戻り値

fn(t, a2, ..., aN) の呼出しが INVOKE(pm, t, a2, ..., aN) と等価となる Callable オブジェクト fn を返す。

fn の型には、必要に応じて typedefargument_type, first_argument_type, second_argument_type, result_type が定義される。

例外

投げない

#include <functional>
#include <memory>
#include <iostream>

int main() {
  auto l = std::make_shared<std::less<int>>();
  std::cout << std::boolalpha;
  std::cout << (*l)(3, 5) << std::endl;
  std::cout << std::mem_fn(&std::less<int>::operator ())(l, 3, 5) << std::endl;
  std::cout << std::bind(*l, std::placeholders::_1, 5)(3) << std::endl;

  // std::cout << std::bind(l, std::placeholders::_1, 5)(3) << std::endl;
  //   エラー! std::shared_ptr< std::less<int> > は Callable ではない

  // mem_fn() で包むと Callable になる
  std::cout <<
      std::bind(std::mem_fn(&std::less<int>::operator ()), l, std::placeholders::_1, 5)(3)
  << std::endl;
}

出力

true
true
true
true

バージョン

言語

  • C++11

処理系

参照