Boost logo

Boost Users :

Subject: Re: [Boost-users] [mem_fn] return type
From: OvermindDL1 (overminddl1_at_[hidden])
Date: 2009-09-01 01:57:01


On Mon, Aug 31, 2009 at 9:33 PM, Lowell McLinskey<lmclinskey_at_[hidden]> wrote:
> I am having trouble understanding the return type of mem_fn.  Is it possible
> to create a vector of this type, analogous to how one can create a vector of
> type mem_fun_t to hold the return values of mem_fun()?  Here is an example
> of what I'd like to do.  Thanks in advance.
> #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;
> }

I do not know if mem_fun supports the boost::result_of template, but
if it does that would let you get what you need, and if it does not
support it then that needs to be fixed.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net