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/uufohvapbyceuaylo...@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

Reply via email to