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 :: function'包含'boost :: bind'結果或'Boost.Phoenix' lambas。 – chris