Boost logo

Boost :

From: Douglas Gregor (gregod_at_[hidden])
Date: 2002-04-17 18:20:21

On Wednesday 17 April 2002 05:48 pm, you wrote:
> And if you take me example, you see that bind() is used to redistribute the
> arguments. chain() just makes sure that all the arguments are correctly
> exposed. A bind-only solution would be something weird like:
> bind2(foo, _1, _2)(bar, _3, _4);
> bind2(foo, _1, _2)(bar, _1, _2); // call both with the same parameters.
> Of course, the function objects returned by bind2() can't be called in any
> way, while bind2()() is "complete".

I see. I'm still not sure that the name 'chain' is best for this task. Maybe
something like 'join' or 'combine'?

> > There is one technical issue with implementing your suggestion: we don't
> know
> > the relative arities of 'foo' and 'bar'. For instance:
> >
> > do_something(bind(chain(foo, bar), _1, _2, _1, _3, _2));
> >
> > How many arguments does 'foo' get?
[snip code]
> Or did I misunderstand the problem?
> Giovanni Bajo

No, you understood the problem correctly. And while arity traits are fine,
they aren't there for already-existing function objects (and there are a LOT
of function objects out there). Note that a Lambda-only or Bind-only solution
(the Lambda solution is much cleaner) doesn't require these types of traits.


Boost list run by bdawes at, gregod at, cpdaniel at, john at