我正在玩C ++ 11并找到mem_fn()
。但似乎它不适用于模板?
vector<int> vec;
auto push_back = mem_fn(&vector<int>::push_back);
编译错误:
memfn.cc:18:22: error: no matching function for call to 'mem_fn'
auto push_back = mem_fn(&vector<int>::push_back);
谢谢!
答案 0 :(得分:0)
vector<>::push_back
是一个重载函数,您需要使用强制转换选择一个特定的重载:
auto push_back = mem_fn(static_cast<void(vector<int>::*)(int const&)>(&vector<int>::push_back));
或者,由于您使用C ++ 11,因此可以使用lambda函数:
auto push_back = [](vector<int>& v, int i) { v.push_back(i); };