On 1/13/14, anonymous <[email protected]> wrote: > On Monday, 13 January 2014 at 13:41:30 UTC, Orvid King wrote: >> If you just want to check if specifically it's a structure, you >> could >> always check `__traits(compiles, T()) && if(typeof(T()) == T)` >> beware >> however that this will evaluate to true if T is a class with a >> static >> opCall who's return type is T. > > is(T == struct) >
Or that, yeah XD (For some reason I was thinking about ensuring that it was constructible, which, after reading the question again, isn't actually needed, woops :D) With that in mind, value type semantics would be `enum hasValueSemantics(T) = is(T == struct) || is(T == enum) || is(T == union) || isArray!T;` Be aware however that this assumes you want arrays to be considered to have value semantics due to their length and base element being by-value.
