Extending UFCS
Tommi
tommitissari at hotmail.com
Wed Aug 29 23:45:11 PDT 2012
On Wednesday, 29 August 2012 at 20:20:04 UTC, 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");
See my suggestion for a similar feature:
http://forum.dlang.org/thread/uufohvapbyceuaylostl@forum.dlang.org
And notice the enhancement request I made. There's more
discussion there:
http://d.puremagic.com/issues/show_bug.cgi?id=8381
More information about the Digitalmars-d
mailing list