Yes it does compile, but it doesn't do anything. I'm looking for it to
print out the numbers. I need the callback to be called.
---
Aaron Wright
From: Igor R
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.
FWIW, the following code compiles in MSVC10 with boost 1.53
(basically, your code in form of sscce):
#include