Erroneous for-loop variable used with /Zc:forScope
Even with /Zc:forScope used, Compiling this code with Visual C++
Express 2005 tells me he is using the i from the most nested for-loop,
which is wrong! And gives an error for not having a assignment
operator. Proving is trying to use the i from the nested for-loop.
This compiles fine on Visual C++ 7.1 (2003) Professional and Visual C+
+ Express 9.0 Beta 2.
int main()
{
struct A {
A& operator++();
bool operator!=(int) const;
//A& operator=(int);
};
for(int i = 0; i < 10; i++)
{
for(A i; i != 20; ++i)
{
}
i = 5;
}
}
The error message:
subprojects\misvc\src\tnef_conversion.cpp(322) : warning C4822:
'try_convert_from_rfc2822::A::operator ++' : local class member
function does not have a body
subprojects\misvc\src\tnef_conversion.cpp(323) : warning C4822:
'try_convert_from_rfc2822::A::operator !=' : local class member
function does not have a body
subprojects\misvc\src\tnef_conversion.cpp(333) : warning C4288:
nonstandard extension used : 'i' : loop control variable declared in
the for-loop is used outside the for-loop scope; it conflicts with the
declaration in the outer scope
subprojects\misvc\src\tnef_conversion.cpp(328) : definition of
'i' used
subprojects\misvc\src\tnef_conversion.cpp(326) : definition of
'i' ignored
subprojects\misvc\src\tnef_conversion.cpp(333) : error C2679: binary
'=' : no operator found which takes a right-hand operand of type
'int' (or there is no acceptable conversion)