
On 09/03/11 11:21, Larry Evans wrote:
On 09/03/11 11:12, Eric Niebler wrote:
On 9/3/2011 10:48 AM, Larry Evans wrote:
when passed arguments that cannot possibly be valid, the arguments just keep accummulating in the curryable<F,Args...>::argI.
Correct.
It would be helpful if some diagnostic were issued in case too many arguments are supplied.
I agree it would be helpful, but I don't think that's possible. Without true introspection, there is no way to know a priori what the max arity of the bound function is, hence no way to know when we've accumulated more arguments than are valid. It just keeps collecting arguments in a vain attempt to satisfy the can_be_called predicated.
OK, so *now* I see a good use-case for David Abraham's point:
http://lists.boost.org/Archives/boost/2011/08/185096.php
about using () to cause evaluation. The user would then know if invalid arguments were supplied.
However, if that case (only evaluate if empty arglist provided), there's really no need to carry the functor, f, along since it's only useful at the last. Hence, instead of supplying () to trigger evaluation, why not just supply the f argment last. IOW, instead of: a_curryable(); do this: a_curryable(f); to trigger evaluation (or a compile-time error messages of the arguments accummulated by a_curryable are not valid. -regards, Larry