
David Abrahams wrote:
David Abrahams <dave@boost-consulting.com> writes:
Well it wasn't obvious to me. Its still not. It just compiled on my comeau 4.3 without error.
I always thought that compiler was conforming. Oh well.
On Windows? That's normally in "microsoft bug emulation mode." Try http://www.comeaucomputing.com/tryitout (I did!)
I hate having to go crawling through the standard just to find this stuff, but for you, because I like you, kid, I make a special exception:
14.6.4 Dependent name resolution [temp.dep.res]
In resolving dependent names, names from the following sources are considered:
- Declarations that are visible at the point of definition of the template.
- Declarations from namespaces associated with the types of the function arguments both from the instantiation context (14.6.4.1) and from the definition context.
To be honest, I'm still trying to parse this last sentence.
Unless one of the arguments has boost::serialization as an associated namespace, only the first bullet point applies in this case. It means that any overloads provided by the user after the call_serialize function definition has been seen will not be considered for overload resolution.
Have I still failed to make my point? Did you not get this message? How hard are you going to make me work for this one?
Working harder won't help. I just need more time to think about this. I don't know if you saw the documentation and code required to deal wih this issue in version 1.32 but it was very messy. I invested effort which I believe resulted in a major improvement. So far no one has come upon this in practice and I'm curious to know why that might be. Robert Ramey