On 12/30/14 8:48 AM, Steven Schveighoffer wrote:
I think it has to do with the fact that when you are defining the
aliases, m_pos for example, is an *instance* member so requires an
instance to get an alias.
What you are probably better off doing is:
void SetProperty(Tin, string Field)(ref Tin param) @property pure @safe
{
mixin(Field ~ " = param;");
m_matrixCalculated = false;
}
alias pos = SetProperty!(float[], "m_pos");
I would also put some strict template constraints on the Field string
too, because one abuse SetProperty pretty easily there.
A possibly more elegant solution, use opDispatch:
void opDispatch(string Field, Tin)(ref Tin param) @property pure @safe
if(Field == "pos" || Field == "ratio" || ...)
{
mixin("m_" ~ Field ~ " = param;");
m_matrixCalculated = false;
}
Not sure if opDispatch works as a @property this way...
-Steve