|
Boost : |
From: Vesa Karvonen (vesa.karvonen_at_[hidden])
Date: 2002-01-15 11:52:37
Hi All,
At least the MSVC++ 6.x compiler implements 'for' incorrectly. For example,
the following snippet fails to compile on MSVC++ 6.x:
for (int i=0; i<10; ++i);
for (int i=0; i<10; ++i); // incorrect double def of i
The problem is that MSVC++ treats the above code as if it had been written as:
int i=0;
for (; i<10; ++i) {}
int i=0; // incorrect double def of i
for (; i<10; ++i) {}
There is a simple widely known workaround for this bug:
#ifndef for
#define for if (0) {} else for
#endif
The biggest undesirable side-effect is that it may brake some legacy MSVC++
code that relies on the old incorrect behavior. On the other hand, such code
probably needs to be fixed sooner or later.
Would this be worth adding to the MSVC++ config files?
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk