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