All,

Using boost 1_29_0, Linux gcc3.2.1.

Just started using boost::bind, like it a lot.
I'm playing around with a little work crew,
which just queues up data, then calls the function
on them later.

bind does a great job of packaging up functions for later use.
is there an analogue for the arguments to those functions?

i.e. a C++ version of
  (apply 'fn '(arg1 arg2 arg3))



here's what i can do today
,----------------
| struct X {
|   bool f(int a, int b);
| };
| 
| X x;
| 
| int i = 5;
| int j = 10;
| 
| // Can do this today, yay!
| bind(&X::f, &x, _1, j)(i);
| 
| // create crew
| work_crew<int> mycrew(bind(&X::f, &x, _1, j));
| // add work
| mycrew.add(9);
| mycrew.add(42);
| mycrew.add(29232);
| 
| // do work
| mycrew.dowork();   // calls x.f(9, 10), x.f(42,10), x.f(29232,10)b
`----------------



I'd like to be able to do something like:
,----------------
| work_crew<???> mycrew(bind(&X::f, &x, _1, _2));
| 
| mycrew.add( ?? 9  10 ?? );
| mycrew.add( ?? 42 10 ?? );
| mycrew.add( ?? 29232 10 ?? );
| 
| // do work
| mycrew.dowork();   // STILL calls x.f(9, 10), x.f(42,10), x.f(29232,10)b
`----------------


Where obviously I have to do something special to package up the
arguments to the function object that's been created.


Is it possible without a huge amount of coding?


Thanks,


TJ


ps.


My crew class is something like this:

template <class DataType, class FunctionType = boost::function1<void, DataType> >
class work_crew {
  std::list<DataType>   queue_;
  typename FunctionType engine_;
public:
  work_crew(FunctionType &tocall);
  void add(DataType d) { queue_.push_front(d); };
  void dowork() { for(iter = queue_.begin(); iter != queue_.end(); ++iter) 
engine_(*iter);};
};


-- 
Trey Jackson
[EMAIL PROTECTED]

"The mirror doesn't lie.  I *am* getting sexier."
-- Dogbert
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to