Static struct initialization syntax behavior & it being disabled upon adding a constructor

cc cc at nevernet.com
Mon Apr 18 12:29:35 UTC 2022


On Monday, 18 April 2022 at 10:26:16 UTC, HuskyNator wrote:
> On a sidenote, I'm surprised D did not choose 0 as the default 
> floating value. Doesn't almost every language do this? I 
> understand the thinking behind it, but when the type one uses 
> in a template influences the behavior of the code, that seems 
> like a pretty big red flag to me. (Any non-floating type 
> defaults to 0, but using floats/doubles suddenly introduces 
> NaN, surely I'm not the only one that sees a problem with this 
> 😅) Especially when it's basically a standard 0 is used for 
> this. Sorry for the rant.

I agree, it's a hiccup.  I have at times intentionally 
initialized a float as NaN so that I can identify later whether 
an appropriate value has been assigned, but I've never seen the 
need to have this be the default behavior when integer types 
always init to 0 (more specifically, init to a MODIFYABLE value). 
  In game design I have tons upon tons of floats that all [should] 
start initialized to zero.  I can add 4 to a declared but 
not-assigned-to int and it'll be 4, a float remains NaN.  Having 
to manually declare appropriate init values to each one doesn't 
aid me in detecting "bugs".  If I had an int that was supposed to 
default to 10 instead of 0 it would still be a bug if I forgot to 
specify that, tripping me up for falsely assuming floats would 
start at 0 doesn't aid my workflow in any way.  The whole "you 
should pay more attention to what you're initializing, o buggy 
programmer you" philosophy seems like something that should be 
reserved for pointers and reference types, not basic numeric 
data.  It's probably set in stone by this point though and too 
late to change.

Ten years ago, almost to the day:
https://forum.dlang.org/thread/thsjtreegdwcgbazhczd@forum.dlang.org

The reasoning still feels flimsy and stubborn.


More information about the Digitalmars-d-learn mailing list