On 6/21/18 3:29 PM, Jonathan M Davis wrote:
On Thursday, June 21, 2018 18:56:39 Francesco Mecca via Digitalmars-d wrote:
On Thursday, 21 June 2018 at 17:11:07 UTC, Steven Schveighoffer

wrote:
On 6/20/18 4:16 AM, Mike Parker wrote:
[...]

I agree with everything, but one thing that is not specified
here is when integers are used as conditionals.

In other words, this still has to compile:

if(1) ...

enum a = 1;

if(a) ...

I can see this somehow getting caught up in the "implicit
conversion to bool", so there should be a section to address
this.


I agree and after reading the DIP I am still confused if we are
allowed to write while(1) (and similar conditionals) anymore.

while(1)

is not technically an implicit conversion. It's an implicit, explicit
conversion, which sounds kind of dumb, but it is technically what happens,
since when you write a conditional, the compiler inserts an explicit cast.

I'm not so sure this is the case for integer literals (literally, I'm not sure). It's certainly the case for custom types. The compiler handles things with builtin types specially. See for instance foreach on ranges vs. arrays.

It might be that this actually is an implicit conversion (it's a literal after all). In that case, what I DON'T want to see after this proposal is accepted is an explanation like "well, why wouldn't you just use while(true)? It's the same thing".

It's why I think the document needs clarification.

-Steve

Reply via email to