In our last exciting episode "Matt Hurd" wrote:
That was quick. Thanks.
Don't mention.
for_each(v.begin(), v.end(), _1 = bind(gen_long));
Yep, that's how I originally had it. Generates lots of compile errors with GCC 3.2 (mingw).
Any clues?
There seems to be two things. First, LL can't deduce the return type of gen_long() call. That is a bit odd, as the class seems to define result_type, which should be enough. Anyway, that can be fixed with bind<long>(gen_long) Then your gen_long is a stateful object, and the operator() is not defined as const. Lambda functors store all arguments by default as const copies. You must thus tell the library to store a reference to your original function object: bind<long>(ref(gen_long)) var does just as well: bind<long>(var(gen_long)) Cheers, Jaakko