Proposal to add 'Elements of Programming' Concepts to std.traits

Guillaume Chatelet chatelet.guillaume at gmail.com
Sat Jun 16 14:08:11 PDT 2012


On 06/16/12 21:22, bearophile wrote:
> Guillaume Chatelet:
> 
> I like hard books, if they give something valuable back.

I think you'll find it rewarding.

> I see. is that semantically different from this (beside being shorter)?
> 
> struct NoZero {
>     int value;
>     this(int x) { value = x; }
>     alias value this;
>     invariant() { assert(value != 0); }
> }
> void main() {
>     auto a = NoZero(5);
>     auto b = NoZero(0);
> }

That's a good one ! I forgot about the _invariant_ keyword.
It's pretty close. For what I understood of x10 (I'm not using it yet
just interested in the language) the compiler will also enforce the
invariance at compile time not solely at runtime. ie

void main(){
  NoZero a = 0; // shouldn't compile
}

Thx for the design though, I keep it in my toolbox.

--
Guillaume


More information about the Digitalmars-d mailing list