On Wednesday, 13 November 2013 at 01:37:15 UTC, Jonathan M Davis wrote:
Except that pretty most of your examples don't seem like they would fail any more than T.init would. int.max / 2 in so no more valid or invalid than 0. The only difference I see would be that by setting pointers/references/arrays to a weird value rather than null, they'll be treated as if they have a value and then blow up rather than blowing up on a null value. For all the built-in types, T.init is essentially supposed to be as invalid as the type can get without pointing off into memory that it shouldn't be addressing.

So, the only thing I see that this suggestion does over using T.init is that on pointers/references/arrays, you won't end up with code that checks for null and avoids blowing up. Code that checks for null would then blow up just as much as code that assumes that the pointer/reference/array was non-null. But that's the only difference I see, since none of the other types end up with
values that are any more invalid than T.init.

- Jonathan M Davis

+1. Essentially, I don't see how any of this is better than .init.

What about user defined types? How do you want to deal with those? Recursively search all basic types and set them to the above mentioned values?

Reply via email to