From: Beman Dawes (bdawes_at_[hidden])
Date: 2004-01-22 17:47:46
At 02:10 PM 1/22/2004, Giovanni Bajo wrote:
>The solution is easy: I had to check, but it turns out that
>_WCHAR_T_DEFINED expands to "1" (ICC71) or "2" (ICC80) when defined by
>ICC itself (that is, when wchar_t is a native type), while the standard
>libraries always define it with no value (as shown above). The patch
>attacched to this mail relies on this minor difference to understand
>whether wchar_t is a native type or just a typedef...
First, thanks for going to the trouble to figure this out. I expect it took
you hours of work.
Although it strikes me as fragile (future library change could cause
failure), it looks like the best solution so far. Your comment in the patch
is a bit wrong, in that it says "Intel C++ defines it to 1". You might
change that to "Intel C++ defines it to 1 or 2" so that a reader
understands why the equality tests don't just look for a 1.
Unless someone else objects, I think you should go ahead and commit the
patch. Be aware CVS seems to be running very slowly.
By the way, Intel is starting to react to our bug reports on various
predefined macro issues. The hope is to avoid future situations like this.
Boost list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk