
On 10/8/07, Joel de Guzman <joel@boost-consulting.com> wrote:
Marco Costalba wrote:
Because the following line
if (a = b) // here = instead of == is intended assert(a==b);
should never fail for any properly defined operator=() and operator==() it derives that operator=() as proposed for our overload does not satisfy the above very intuitive concepts (because &foo1 != &foo2) so I would say it cannot be called 'idiomatic' for this case.
Yep. Agreed. See my other post why I am convinced your intuition is correct :-) No need to convince me more ;)
How about 'register' instead of 'add' or 'assign' ? overloads<void(int), void(std::string)> functions; functions.register(&foo1); functions.register(&foo2); ? This way we can also have something like: functions << register(&foo1) << register(&foo2); ? The above suggestion follows the notion of directives, which are being passed to an object to invoke some sort of behavior. This might be similar to something like: std::cout << std::endl; -- Dean Michael C. Berris Software Engineer, Friendster, Inc. [http://cplusplus-soup.blogspot.com/] [mikhailberis@gmail.com] [+63 928 7291459] [+1 408 4049523]