On Saturday, 25 November 2017 at 09:39:15 UTC, Dave Jones wrote:
On Friday, 24 November 2017 at 22:38:49 UTC, Jonathan M Davis
wrote:
On Friday, November 24, 2017 20:43:14 A Guy With a Question
via Digitalmars- d-learn wrote:
On Friday, 24 November 2017 at 14:43:24 UTC, Adam D. Ruppe
That requires data flow analysis, which the compiler doesn't
do a lot of, because it can be complicated. It also tends to
result in the compiler giving warnings or errors in cases
where it's not actually true that the variable is used before
it's given a value, because it can't do it perfectly. There
was a recent discussion on this in the main newsgroup with
regards to guaranteeing with a pointer or reference was
initialized to something other than null.
I think he means just spew an error if a float is declared but
not explicitly initialised... Whats the problem with...
float foo; // compiler error "floats must be explicitly
initialised"
float foo = float.nan; // old behaviour.
I mean at the end of the day, that would turn a run time error
into a compile time error which is a good thing isnt it?
That is exactly what I meant. I think most languages just choose
to default it to something convenient, which is 0. C++ chooses
not to default it for speed reasons. If D chooses it's defaults
to make errors stick out, why not just error at declaration if
they don't explicitly set it to something. Including void, which
would give you C++ undefined behavior from what I've read so far.