Jaakko wrote:
 >I was doing something like it recently, so, sure:

Awesome!

 >template <class DataType, class FunctionType = boost::function1<void,
 >DataType> >
 >class work_crew {
 >  std::list<DataType>   queue_;
 >  FunctionType          engine_;
 >public:
 >  work_crew(FunctionType const& tocall);
 >  void add(DataType d) { queue_.push_front(d); };
 >  void dowork()
 >  { 
 >    typedef typename std::list<DataType>::iterator iterator_t;
 >    for (iterator_t iter = queue_.begin(); iter != queue_.end(); ++iter)
 >       tuples::apply(this->engine_, *iter); // here
 >  };
 >};

Question: does the above work even if my work_crew is still the
vanilla:

    work_crew< int, boost::function<void, int> > vanillaCrew(....);

or would I need

    work_crew< tuples::tuple<int>, boost::function<void, int> > 
closeToVanillaCrew(....);


- I ask b/c of the 'tuples::apply(...)' portion.
At first glance, it's not clear that

   int i;
   tuples::apply(this->engine_, i)

would not work (b/c i is not a tuple).


 >With a little bit more of coding and Boost.MPL, you can do even better on
 >
 >    work_crew< tuples::tuple<int,int>, boost::function2<void,int,int> > 
 >        mycrew(bind(&X::f, &x, _1, _2));
 >
 >line:
 >
 >    work_crew< mpl::list<int,int> > mycrew(bind(&X::f, &x, _1, _2));

I'll look into that later, it'd be exciting.

Hopefully I'll be able to see this in 1_30_0!   ;-)




TJ

-- 
Trey Jackson
[EMAIL PROTECTED]

"Failure is not an option. It comes bundled with your Microsoft product."
-- Ferenc Mantfeld
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to