On Monday, 3 October 2016 at 13:19:19 UTC, Manu wrote:
Fill in the blank...
I'm having a really hard time with this. I've made it work with
a
mountain of code, and I want to see what others come up with...
[...]
Dere's a typo
static assert( isStaticMember!(S, "iosm"), "!");
Should be iosf
Easy:
template isStaticMember(T, string member)
{
static if(__traits(compiles, &__traits(getMember, T, member)))
{
static if(is(FunctionTypeOf!(__traits(getMember, T, member)) ==
function))
{
enum isStaticMember = isFunctionPointer!(__traits(getMember,
T, member)) || isDelegate!(__traits(getMember, T, member)) ||
__traits(isStaticFunction, __traits(getMember, T, member));
}
else
{
enum isStaticMember = true;//!is(typeof(__traits(getMember, T,
member).offsetof));
}
}
else
{
enum isStaticMember = false;
}
}