Hacker News new | ask | show | jobs
by jcelerier 2963 days ago
That is only the case in reference-centric languages such as Java, C#, JS, etc. In value-based languages, "values" can't be null, while "references" can.

For instance a `std::string` or a `double` in C++ can never be null ; a pointer to either can be but that's far from idiomatic.

1 comments

That approach doesn't really work, because C++ conflates where a value is stored with whether the value can semantically be null. Sometimes you want a nullable value that's on the stack. Sometimes you want a non-null value in the heap. Both these things are hard to do in C++.
Neither of those is hard to do in C++. The first one is std::optional. The second one is a reference or a non-nullable smart pointer like https://github.com/dropbox/nn
It's easy to do _since less than a year_
And probably not in your compiler yet. Or if it is, you'll blow up on thousands of other compilers when people try to build it themselves.
boost::optional has been available since 2003. There's no excuse.