Extending UFCS

Jacob Carlborg doob at me.com
Wed Aug 29 23:34:22 PDT 2012


On 2012-08-29 22:20, Piotr Szturmaj wrote:
> The current possibility of UFCS is:
>
> struct S { }
> void func(S s) { }
>
> S s;
> s.func(); // equivalent of func(s);
>
> why not add:
>
> template sizeInInts(T)
> {
>      enum sizeInInts = T.sizeof / 4;
> }
>
> S.sizeInInts // equivalent of sizeInInts!S
>
> Is it worth it? I mean adding static members to aggregate types.
>
> Consider another example:
>
> struct MD5 { ... }
> struct SHA1 { ... }
>
> string hash(Digest)(const(void)[] data)
>      if (isDigest!Digest)
> {
>      Digest d;
>      ubyte[DigestLen!Digest] h;
>      d.put(cast(const(ubyte)[])data);
>      d.finish(h);
>      return xformat("%(%02x%)", h);
> }
>
> and instead of writing hash!SHA1("abc"), write SHA1.hash("abc");

I would like to have this feature. I've asked about it before.

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list