private static T getAttribute(alias decl, T)(T default_value)
{enum val = findFirstUDA!(T, decl); static if (val.found) return val.value; else return default_value;
}
alias member = TypeTuple!(__traits(getMember, T, mname))[0]; enum fname =
getAttribute!(member)(NameAttribute(underscoreStrip(mname))).name;
I don't see this on the vibe.d master branch, it looks more like this now:
enum fname = getAttribute!(T, mname, NameAttribute)(NameAttribute(underscoreStrip(mname))).name;
and
private static T getAttribute(TT, string mname, T)(T default_value)
{
enum val = findFirstUDA!(T, __traits(getMember, TT, mname));
static if (val.found) return val.value;
else return default_value;
}
Which leads me to believe that the cause of this error is because D expects this
to be defined when passing a class / struct member alias instead of the type / member name as a template parameter. It could be a compiler bug... but I'm not so sure why the vibe.d master would trigger this sort of error, because I couldn't find your reproduction in the master branch. Did you use an older version?