On Mar 31, 11 09:42, Ary Manzana wrote:
I just hate it when you have to write too much to get simple things
done.

Does this type have a member? Current approach:

1. import std.traits;
2. invoke hasMember!(S, "m")

Another approach:

1. I have the type, let's ask it: S::hasMember("m")

Map's thought to code.

My problem is that when you start using D's cool features you end up
with a really hard to understand and obscure code...

How often do you really needs feature in __traits? I've grepped my code which uses a lot of templates and CTFE, and it only appears in 2 lines

    else static if (__traits(isScalar, T)) {
        static if (__traits(compiles, T.init.re))

Therefore I oppose the use of :: just for __traits, because it's so rare.

Now I have a counter-proposal,

    T::ident(x, y, z, ...)  <=>  ident!(T, x, y, z, ...)

then hasMember can be invoked as

    import std.traits;
    ...
    S::hasMember("m")

Isn't it better than reserving :: just for __traits?

Reply via email to