
On 08/27/2011 04:20 PM, Jeffrey Lee Hellrung, Jr. wrote:
On Sat, Aug 27, 2011 at 2:43 PM, Michael Caisse< boost@objectmodelingdesigns.com> wrote:
On 08/24/2011 08:13 AM, Eric Niebler wrote:
On 8/24/2011 1:58 AM, Roman Perepelitsa wrote:
I think this is the case with functors generated by bind -- they appear
to be callable with any number of arguments.
Ouch. :-(
One option, which I don't like, is to "fix" bind to disable any operator() overloads that result in an invalid invocation of the bound function. That can be done easily with the is_callable_with metafunction in my curryable implementation, but would reduce portability somewhat.
That isn't "broken" behavior. Very often that is exactly what you want from bind.
Why would you prefer enabling operator() overloads of bind that result in a compiler error over "SFINAE-disabling" them? (Other than compile time considerations and minimizing complexity.)
- Jeff
Hi Jeff - I might be confused. I thought we were talking about the bound functor allowing a different number of arguments than the function that it is bound to. For example, more arguments like this: void log( std::string name, timestamp_t stamp ); ... function<void(std::string,timestamp_t)> notify = bind( &log, _2, _1 ); ... notify( timestamp, source, lat, long, message ); There is no error here. Have I missed the point? michael -- Michael Caisse Object Modeling Designs www.objectmodelingdesigns.com