On Sunday, 13 September 2015 at 17:34:11 UTC, BBasile wrote:
On Sunday, 13 September 2015 at 17:24:20 UTC, Laeeth Isharc wrote:
On Sunday, 13 September 2015 at 17:09:57 UTC, wobbles wrote:
Use __traits(compiles, date.second)?


Thanks.

This works:

static if (__traits(compiles, { T bar; bar.date.hour;}))
                pragma(msg,"hour");
        else
                pragma(msg,"nohour");
        

can't you use 'hasMember' (either with __traits() or std.traits.hasMember)? It's more idiomatic than checking if it's compilable.

I'll check again in a bit, but I seem to recall hasMember didn't work. I would like to get the type of a member of a type, and I think hasMember!(T.bar.date","hour") didn't work for that. Possibly it does work and I messed it up somehow, or it doesn't work and there is a more elegant way.

Someone ought to write a tutorial showing how to use the good stuff we have to solve real problems. Eg an annotated babysteps version of Andrei's allocator talk. I can't do it as too much on my plate.

Reply via email to