我無法編譯C++ 11中的簡單程序。 你可以在這裏看看http://cpp.sh/9muxf。C++ std :: function operator =
#include <functional>
#include <iostream>
#include <exception>
#include <tuple>
#include <map>
using namespace std;
typedef int Json;
typedef string String;
class Integer/*: public PluginHelper*/
{
public:
Json display(const Json& in)
{
cout << "bad" << endl;
return Json();
}
map<String, function<Json(Json)>>* getSymbolMap()
{
static map<String, function<Json(Json)>> x;
auto f = bind(&Integer::display, this);
x["display"] = f;
return nullptr;
}
};
問題在行x["display"] = f;
你有很大的幫助,如果你讓我明白髮生了什麼在這裏:)到來。 Can std::function
不能被複制?
沒有編譯器或許發出錯誤訊息? – juanchopanza
有些人認爲綁定現在沒用了,因爲有lambda/closures,所以考慮'auto f = [this](Json j) - > Json {return display(j);};'作爲替代 – PeterT
您需要'#include ' –