Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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.



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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: