On Fri, 20 Aug 2010 20:33:43 +0000, Iain Buclaw wrote: > == Quote from Ersin Er (ersin...@gmail.com)'s article >> Hi, >> The following code compiles and outputs "1 = 1" as expected: 1 == 1 && >> writeln("1 = 1"); >> However, the following code fails to compile (although it should not): >> 1 == 2 && writeln("1 = 2"); >> The error is as follows: >> Error: integral constant must be scalar type, not void What I expect >> that the second code should also compile and output nothing when > executed. >> Am I missing something? >> Thanks. > > Because you are dealing with literals here, it's best to assume the > compiler will try to evaluate and compile down the code you write. > > The first example you give will be optimized down to just > > writeln("1 = 1"); > > Whilst your second example is simply > > false; > > > Regards
And the relevance of that to the OP's post which noted that 1 == 2 && writeln("1 = 2"); produces an error message complaining about void where a scalar is expected is what? Also irrelevant are statements that Andrei is wrong or even has taken leave of his senses merely for accurately describing in his book a particular bit of D's semantics that he may or may not have had any role in crafting.