
Marco Costalba wrote:
The important update of this version of overload.hpp is that indices are avoided and the order of registering the overload functions can be random, i.e. has not to follow the order of declaration of the signatures that the overload class supports.
There's a big problem with that: you can't (there's no way) to deduce the signatures of polymorphic function objects. Example: struct square { template <typename T> T operator()(T x) const; };
Choosing add_overload(), operator<<() or something else is just a taste matter IMHO.
Using operator<<() would be nice, but if this can create confusion it can be changed to something else 'Surely better'.
I don't quite like the operator in this case, FWIW. As Dave (A) always says, use of such operators should be idiomatic. In this case, it is not. Regards, -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net