From: Robert Ramey (ramey_at_[hidden])
Date: 2005-06-28 08:40:14
I did spend a significant amount of time trying dealing with this. The
first effort resulted in the table of rules which can be found in the
documentation of 1.32. I found this very unsatisfactory. If I remember
correctly it was one set of requirements for compilers supporting partial
template specialization and another set for compilers that didn't. Given
the two alternatives, I found the current one much better.
I understand that I have to live with two-phase lookup. But there's no
requirement that I have to think its a good idea. I first noticed the
problem when the meaning of my code silently changed depending upon header
order. Of course this was compiler dependent. So it was huge hassle to
find. Sorry, I just can't see how this can be a good idea.
> Before you object, I don't think my assessment is unduly harsh: the
> consequences of using an unqualified call as you have done have
> already bitten one developer and the library change is, IIUC, not even
> out the door to the public. Indiscriminate ADL is well-known to cause
> this sort of problem, and Boost developers are probably more careful
> than most to insulate themselves from it by isolating their types from
> functions. It's going to be a much bigger deal once Joe Global
> Namespace gets his hands on it.
> I don't know much about the needs of export.hpp, but there are
> well-known ways to navigate this terrain and I can't believe that the
> serialization library is unique in this area. Maybe if you ask for
> help and give some detail about what you're trying to do, someone can
> suggest a better approach. For example, did you consider using class
> template partial specialization?
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk