std::function|C++|STL
std::function(C++11) の覚書
C++日本語リファレンスによると下記の通り↓
functionクラステンプレートは、パラメータの型リストArgTypes...、戻り値の型Rに合致する、あらゆる関数ポインタ、関数オブジェクト、メンバ関数ポインタ、メンバ変数ポインタを保持できるクラスである。*1
...難しいので理解出来る範囲でまとめると、
std::function< 戻り値の型(引数の型) > で宣言すると、関数オブジェクトを代入出来るっぽい。
#include <bits/stdc++.h> using namespace std; int sum( int n ) { return n + n; } int main() { //関数 sum を変数 f に保存 function<int(int)> f = sum; //保持している sum 関数を呼び出す cout << f( 10 ) << endl; //result 20 //ラムダ関数を保存 function<string(string)> s = [&]( string s ){ return s.substr( 2, 3 ); }; cout << s( "wwcwwww" ) << endl; //result cww return 0; }