Re: defining static variables inside 'for' loops
* petrum:
I noticed you can define 'static' variables inside 'for' loops, but
only local variables in 'if' (or 'while') statements.
For example all these 3 x constructions are valid:
for (static int i = 0;;)
;
if (int i = 0)
;
while (int i = 0)
;
I was wondering where in the standard C++ is this specified.
In the syntax for the loops.
'if' and 'while' only have a 'condition' (IIRC), which has a special purpose
syntax for emulating a limited kind of declaration, marginally useful for e.g. a
dynamic_cast as condition.
In the 'for' loop the second element of the loop head, the loop continuation
condition, is such a 'condition'. The first element can be a more general
declaration. Thus, you can have a general + a limited declaration :-), like
for( int a = 10; int b = 10*a; --a )
{
}
I'd consider that as abuse of the construct, and it's probably not intended.
Many thanks,
Petru Marginean
Hm, it would be really nice with a public (e.g. SourceForge) version of
ScopeGuard adapted for Visual C++. The problem with that compiler is that its
__LINE__ doesn't work properly when you compile with flag for edit-and-continue
or whatever it was, which of course is a default setting in Visual Studio;
instead of standard __LINE__ one must use Microsoft-specific __COUNTER__. I
think more widespread usage of ScopeGuard would be a very good thing. :-)
Cheers,
- Alf
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]