Boost logo

Boost Users :

Subject: [Boost-users] [phoenix] - std::for_each - How to call member variable that is a boost::function?
From: Aaron_Wright_at_[hidden]
Date: 2013-04-30 12:00:49


I'm a little confused on the correct way to lazily call a boost::function
in a phoenix expression. For example, this doesn't do anything:

namespace bp = boost::phoenix;
namespace bpa = bp::arg_names;

struct Foo
{
   boost::function< void() > callback;

   Foo(boost::function< void() > const& callback) :
      callback(callback)
   {
   }
};

main()
{
   std::list< Foo > foos;

   foos.push_back(Foo(std::cout << bp::val(1) << '\n'));
   foos.push_back(Foo(std::cout << bp::val(2) << '\n'));
   foos.push_back(Foo(std::cout << bp::val(3) << '\n'));

   std::for_each(
      foos.begin(),
      foos.end(),
     bp::bind(&Foo::callback, bpa::arg1));
}

If I wrap the bind(...) in another bind(...) it'll work, but is that the
right way? I'm not binding anything, I just want the callback called.

---
Aaron Wright

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