
I found some corner cases while trying to implement Kevlin's idea. If you're interested, I can send you my letter to Kevlin.
Thanks, I'm interested :-)
1. If operator== is not used there should be no need for holded classes to implement it. 2. If operator== is used, and the holded class does not define it, the code must not compile. It's not possible. You may create "any" object in one TU and call operator== in other. A compiler doesn't know about other TUs. It just compiles current TU.
Assuming the holded object class is the same (and does not have operator== in the interface), the behavior I want is that the TU not using any::operator== does compile, while the TU using it does not. The expected error would be operator== not defined for holded class. The conditions were meant for a single TU. This can be achieved with not instantiated templates, but not with boost::any which inherently needs run-time polimorphism :-( In other words, what I would like is to have different (compiler generated) boost::any classes. One without operator== in case it is not used. The other needs the holded class operator== implementation and won't compile without it.
-- Alexander Nasonov Project Manager http://www.akmosoft.com _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Cheers Jorge