
Scott McMurray <me22.ca+boost <at> gmail.com> writes:
converter<int>(locale_ = loc, throw_ = true).from(str, 0);
To me, that's the nicest one yet proposed.
And it'd be quite reasonable, instead of statics, to just use convert<int>().from(str, 0), since that's already common from function objects.
I am not sure I can immediately see the visual advantage of convert<int>().from(str, 0) over convert<int>::from(str, 0) Functionally, (with everything else equal) #1 has an additional overhead of creating an object.
And actually, why not spell from() as operator(), so it can be a proper function object?
If I remember correctly, one of the reasons for 'from' was the explicit directiveness of the conversion -- convert<int>::from(string). Functionally, the advantage of a static 'from' function over op() is that the former allows to delay implementation specialization (and, therefore, converter instantiation) until we know both -- TypeIn and TypeOut -- conversion types. It's turned out to be quite important as the actual conversion implementation equally depends on TypeIn as on TypeOut. For that reason I feel that constructing an instance of converter<TypeOut> (with only TypeOut known) is very limiting. V.