$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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.
Doug