On Saturday, 15 September 2012 at 12:38:53 UTC, Henning Pohl
wrote:
The way D is dealing with classes reminds me of pointers
because you can null them. C++'s references cannot (of course
you can do some nasty casting). So you can be sure to have a
valid well-defined object. But then there is always the
ownership problem which renders them more dangerous as they
seem to be. D resolves this problem using a garbage collector.
So why not combine the advantages of C++ references "always
there" guarantee and D's garbage collector and make D's
references not nullable? If you want it to be nullable, you can
still make use of real pointers. Pointers can be converted to
references by implicitly do a runtime check if the pointer is
not null and references can be converted back to pointers.
I guess you had good reasons about choosing the nullable
version of D references. Explain it to me, please.
Just some links.
Info at least from 2004.
http://blogs.msdn.com/b/ericlippert/archive/2012/07/17/should-c-warn-on-null-dereference.aspx
http://blogs.msdn.com/b/cyrusn/archive/2005/04/25/411617.aspx
http://devtalk.net/csharp/chained-null-checks-and-the-maybe-monad/
google "site:msdn.com non nullable"
Personaly I think that "right tool/pattern for right job/task" is
best solution. Maybe problem not in nullable references.