On 2014-01-17 00:03:19 +0000, "Meta" <jared...@gmail.com> said:
On Thursday, 16 January 2014 at 23:56:14 UTC, Adam D. Ruppe wrote:
// use it! notice that it is notnull already
auto na = create!A();
That's neat. Didn't Andrei mention something about wanting new to be
removed from the language and replaced with a library solution using
allocators? If that were the case, it'd be pretty easy to enforce that
class allocators return NotNull!T. It'd get rid of nullable references
without needing a breaking language change.
In one C++ project of mine I have a make_new< T >(args...) template
function that does exactly that. Pretty neat.
The biggest downside to such an approach is that you're creating your
own meta-language on top of the regular language (replacing the
language syntax with your own). But it cannot really be avoided if you
want NotNull to be usable. The next language facility you might have to
duplicate is the cast (to keep the not-null "qualifier" when casting).
Then maybe you'll want it to play nice with other the other "qualifier"
type template Rebindable.
--
Michel Fortin
michel.for...@michelf.ca
http://michelf.ca