
"Robert Ramey" <ramey@rrsd.com> writes:
I would call your attention to the code in serialization.hpp - line 108 "layer 3". I believe that this code actually considered this problem. By using an argument from the boost::serialzation namespace It guarenteed that the correct overload would be found on the second phase of two phase lookup on compilers supporting ADL (all those that implement two-phase lookup). If I remember correctly, I also studied the rules that governed the conversion from boost::serialization::version_type to const unsigned integer and this information was used to make the process work. I left the note you see in the documentation. This resolved the compilation errors I was having with compilers which implement two-phase lookup so naturally I took this a confirmation that I understood the details. Unfortunately it was some time ago and and after I thought I resolved the problems generated by two-phase lookup I moved on to other problems. So I thought I understood it. Of course now I'm not so sure. I forgot the details of my solution but did remember the amount of detail I had to plow through.
Yikes! **** I owe you an abject apology. I'm very sorry for wasting all **** **** this time and energy. I should have looked at the code much **** **** sooner. That's a very clever technique. **** Provided the file_version parameter is never templatized, that trick works and it's always okay to overload in boost::serialization.
It's hard for me to feel very sympathetic. You have the online compiler.
I don't think its practical to use the online compiler to compile code that requires scores of files.
I've done it. Just preprocess and paste.
You could find out what the switches are (--no-microsoft and/or --no-microsoft-bugs) to turn on 2-phase lookup on your local installation of comeau and do some experiments.
I can and I will. I had no reason to suppose that it was turned off for boost (presumably in the toolset). I just assumed that build tools would be setup to maximize compiler conformance with the standard. Perhaps presumptuous on my part but I have to make some reasonable assumptions or I'll never get anything done.
The problem is that como still doesn't have a switch that turns off MS bug compatibility but leaves on the extensions needed to compile MS system headers. Without the ability to process Windows.h, many Boost libraries wouldn't compile.
That would still be a big improvement on the status quo.
OK I'll just make this alteration in that section. Halleluhuh
At this point, if you make any change I think you should add a note for those of us who are too clever by half, saying that, yes, it's really okay to overload in boost::serialization, and describing the trick used. So sorry, -- Dave Abrahams Boost Consulting www.boost-consulting.com