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