why scope(success)?
Sean Kelly
sean at f4.ca
Thu May 11 09:19:08 PDT 2006
Ben Hinkle wrote:
> "Stewart Gordon" <smjg_1998 at yahoo.com> wrote in message
> news:e3vkhn$1kq5$1 at digitaldaemon.com...
>> James Dunne wrote:
>> <snip>
>>> Then the implementation according to D's language specs is incorrect.
>>> Nothing is mentioned about new scopes created by if-statements or
>>> while-statements. New scopes are only created from block { } statements
>>> when inside a function body. Scope is mentioned (in passing) for the
>>> for-statement; the initializer is noted as a special case. Did I miss a
>>> blanket statement somewhere else in the docs about this?
>> I think you're meant to use a bit of common sense here. What sense does
>> it make for a declaration to be conditional at runtime?
>>
>> To be honest, I think a naked declaration as the body of a runtime control
>> statement should be illegal.
>
> You're probably right. I had tried dmc and cl and they both complained about
> the use of 'a' without a declaration but in fact I was expecting an error
> that a declaration can't be the body of an 'if' statement. Since both
> compiler didn't say boo about the declaration I figured that declarations
> are considered statements. The C99 spec doesn't consider a declaration a
> statement so I suspect the compilers are giving poor errors.
What about this:
if( auto i = doSomething() )
printError( i );
I don't think anyone would expect 'i' to survive after the printError
expression.
Sean
More information about the Digitalmars-d
mailing list