Andrei Alexandrescu wrote:
[snip]
The problem is you keep on insisting on one case "I have a non-null
reference that I don't have an initializer for, but the compiler forces
me to find one, so I'll just throw a crappy value in." This focus on one
situation comes straight with your admitted bad habit of defining
variables in one place and initializing in another. The situation you
need to open a curious eye on is "I have a reference that's never
supposed to be null, but I forgot about initializing it and the compiler
silently put a useless null in it." The simplest case is what _every_ D
beginner has done:
T x;
x.fun();
to witness a crash. Why the hell does that crash? It did work when T was
a struct. (Also this damns generic code to hell.)
So again: focus on the situation when people forget to initialize
references that are never supposed to be null.
That has happened to me, and I'm supposed to know about this stuff. And
one thing you don't understand is that on Linux, access violations are
much more difficult to figure than others. On a computing cluster it
gets one order of magnitude more difficult. So spare me of your Windows
setup that launches your debugger on the line of the crash. For better
or worse, many don't have that. People sometimes have problems that you
don't have, and you need to put yourself in their shoes.
Quoted for truth.
--
Tomasz Stachowiak
http://h3.team0xf.com/
h3/h3r3tic on #D freenode