$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-users] [mpl] bind help sought
From: Manfred Doudar (manfred.doudar_at_[hidden])
Date: 2010-02-22 15:19:51
Hi,
I need to be explicit about a function call, but unsure quite how to
make it work, cut down example follows:
struct M
{
  static
  void foo() { ... }
};
struct R
{
  static
  void foo() { ... }
};
struct Func
{
  typedef void result_type;
  template <typename T, typename U>
  result_type
  operator()(U& u) const
  {
      T::foo();   // call on either M or R
      // do something with 'u'
  }
};
int main(int argc, char** argv)
{
  using namespace boost::mpl;
  typedef vector<M, R> vec;
  Func f;
  Object instance;
  for_each<vec>(boost::bind(&Func::operator()<XXX, Object>,
                            boost::ref(f),
                            instance)
               );
  return 0;
}
Question is, what goes in at XXX above?
I was thinking something along the lines of:
   boost::mpl::bind<boost::mpl::_1>
..but well, that doesn't work.
All help appreciated.
Cheers,
-- Manfred