mem_fn()不适用于模板?

时间:2014-03-09 10:48:29

标签: c++ c++11 clang

我正在玩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);

谢谢!

1 个答案:

答案 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); };
相关问题