#include <vector>
#include <functional>
#include "boost/shared_ptr.hpp"
#include "boost/mem_fn.hpp"
class A
{
public:
A(const int a) : a_(a) {}
const int get() const {return a_;}
private:
int a_;
};
int main(int argc, char** argv)
{
// I can do this
std::vector<std::const_mem_fun_t<const int, A> > v;
v.push_back(std::mem_fun(&A::get));
int i = v[0](new A(4));
// and this
boost::shared_ptr<A> p(new A(7));
int j = boost::mem_fn(&A::get)(p);
// but how do I do this?
// std::vector< WHAT GOES HERE > w;
// w.push_back(boost::mem_fn(&A::get));
// int k = w[0](p);
return 0;
}