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