Nullable or Optional? Or something else?
Jeremie Pelletier
jeremiep at gmail.com
Wed Sep 2 17:20:42 PDT 2009
Andrei Alexandrescu Wrote:
> I plan to add a Nullable struct to Phobos (akin to C#'s Nullable,
> Boost's Optional).
>
> Apparently a good design is to define Optional!T with a minimum of
> member functions (ideally none) and have it use the "alias this" feature
> to masquerade as a T. That way Optional!T looks and feels much like a T,
> except that it supports a function
>
> bool isNull(T)(Optional!T value);
>
> Am I on the right track? If so, what is the name you'd prefer for this
> artifact?
>
>
> Andrei
I just recently converted tons of COM headers in win32 to D (gotta love extern(C++)) and I really like how they hint the compiler of what parameters are used for. They have all sorts of macros like __in, __inout, __out, __in_opt, __inout_opt, __out_opt.
Why can't these be used in D too and implicitly add the appropriate contracts to the function:
void foo(in_opt int* a) { ... }
can be the same as
void foo(in int* a)
in { assert(a); }
body { ... }
I know I'm trying to push a lot of library stuff to the language spec, but it would just be so much more convenient that way. in_opt would be semantically the same as in, with the added contract.
More information about the Digitalmars-d
mailing list