$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Trey Jackson (tjackson_at_[hidden])
Date: 2003-02-20 20:51:43
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 tjackson_at_[hidden] "Failure is not an option. It comes bundled with your Microsoft product." -- Ferenc Mantfeld