
On Fri, Sep 3, 2010 at 7:50 AM, Stefan Strasser <strasser@uni-bremen.de>wrote:
david, why do you need to number the lambdas? doesn't the "nested index"
of the args refer to the level of nesting instead of the number given to the lam<> template?
after reading the link larry posted (1), let me correct my question: does lam need to know the number of parameters of the resulting function?
Boost.Bind simply ignores additional arguments, and generates a compiler error for insufficient arguments.
void f(int,int); bind(&f,3,_1)(1,2); // -> f(3,1)
It is possible to make the semantics such that lam does not need to know the number of parameters of the resulting function. Instead of returning a function with a set arity it will return a function with many arities, like bind does. My preference is for a set arity return value. Every time I've used bind I've always had a specific arity in mind and its current behavior has been a source of subtle run-time bugs. If someone really wants a multi-arity function then they can use another tool to do that: make_multi_arity( lam<1>( _1_1 ) ); Furthermore it really complicates the simple semantics we have. That would make me sad :( -- David Sankel Sankel Software www.sankelsoftware.com 585 617 4748 (Office)