From: Robert Ramey (ramey_at_[hidden])
Date: 2004-08-11 11:01:40
Stefan Slapeta wrote:
>>Robert Ramey wrote:
>> CW two-phase lookup threw me for a loop.
What I meant was it left me dazed and confused.
>This seems _very_ strange to me because two-phase lookup should also be
> turned on for Intel 8, so I don't understand why all the tests pass on
>this compiler. Please could you mail me a particular test case or code
>sequence which you think was failing because of two-phase lookup issues?
Is this something that can be turned off/on at will for intel? And/or other
compilers? I use boost-build defaults as much as possible. Hmmm - maybe
two phase lookup should turned off by default for boost? This experience
has convinced me that two phase lookup is a bad idea.
A couple of months ago I tested the library with intel 8.0 . After
resolving one anomally (related to typeid of const/non-const) things
compiled and everything passed. My 30 day license exprired so I haven't
been able to test here since.
When I went to cw pro version 9, I had the tests for non-intrusive
serialization failed. This uses function template overload. This turned
out that to be the same problem I had with Commeau. After much effort I
came to understand the issue. I made adjustments to address this. This
resulted in more changes than I wanted to make at this point. Oh well. It
has also resulted in a slightly more complex explanation of how to use
non-intrusive serialization portably. This works but it offends my sense of
aesthetics. On the other hand, It did force me implement ADL for finding
overloads. This was the one feature that had been asked for but hadn't
implemented. I didn't see a way to do it without causing a two large ripple
effect through the API, docs, etc. Martin Ecker showed me how to fix this
so now we have ADL for overloading serialize functions.
So I would think that if Intel implements two-phase lookup, things would
have failed much sooner. On the other hand, during my 30 test trial of Intel
8.0 I got two?! Notices for updates. It wouldn't surprise me if there are
multiple versions named Intel 8.0.
In spite of all the pain I've experienced in porting code like this to all
such platforms. I've come to appreciate the general high quality of these
compilers. They all have quirks and errors. But now having had to delve
much deeper into details of C++ than I ever had to before, I have a much
better appreciation of how difficult is has to be to write something like
this. I think C++ would be much improved if the standards committee would
be a little more conservative about "mandating" untested features.
Sometimes I wonder if its not just a group of really smart guys sitting
around a table thinking up the hardest stuff they can for other people to
implement - Sort of like the marketing department. I've had huge
difficulties traced to arcane areas of C++ that are really too hard to
understand for the normal person. Anyway - one man's two cents.