1
私は関数ポインタのマップを作成しています:新しい要素を関数ポインタ "inline"のマップにプッシュしますか?以下の最小限の作業の例に示すよう
#include <iostream>
#include <map>
#include <vector>
using namespace std;
typedef std::vector<bool > Bar;
typedef bool (*Foo)(Bar b);
typedef std::map<int, Foo > MapOfFunctions;
inline bool f1 (Bar b) { return b[0] && b[1]; }
int main() {
MapOfFunctions myMap;
myMap[0] = f1; // works
//myMap[1] = // Define a function right here, "in line"?!
if (myMap[0](Bar (2,true)))
cout << "it's true" << endl;
return 0;
}
私はマップ「インライン」の新要素(すなわち機能)を定義することが可能であるかどうかを知りたいのです
つまり、コード内の別の場所に別の関数を最初に作成する必要はありません(この例ではf1
)。
を編集します。ソリューションは、C++ 98である必要があります。
どのようにC++ 98解決策は?これはC++ 11の機能のようです。 OPのこの要件を言及していないため申し訳ありません。 –
@space_voyager:いいえ、申し訳ありません。 –
@space_voyager、 'boost :: bind'結果または' Boost.Phoenix'ランバを保持する 'boost :: function'です。 – chris