new properties for basic types
    Philippe Sigaud via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Mon Jul 14 22:26:49 PDT 2014
    
    
  
> Hmm.
> So how do I use stuff like this:
>
>     template defaultInit(T)
>     {
>         static if (!is(typeof({ T v = void; })))    // inout(U)
>             @property T defaultInit(T v = T.init);
>         else
>             @property T defaultInit();
>     }
>
> (this is from std.traits - ok, it's private, but anyway)
It should be invoked as `defaultInit!SomeType`
> Because I have seen nowhere anything like defaultInit!T (or T.defaultInit)
> and don't understand why here the attribute @property is used.
> Why does it make a difference, and how?
@property allows you to call a function without the parenthesis (), to
imitate a field in a struct or class.
In this particular case, I don't know what defaultInit is used for. It
seems to compile to a forward declaration of a function, but I don't
know what for.
I cannot find it on my copy of std.traits. What DMD version are you using?
    
    
More information about the Digitalmars-d-learn
mailing list