On Monday, 11 April 2016 at 22:06:00 UTC, ag0aep6g wrote:

mixin template multipleEdgeProperties (EdgePropertyList...)
{
    static if (EdgePropertyList.length >= 1)
    {
        mixin singleEdgeProperty!(EdgePropertyList[0]);
        mixin multipleEdgeProperties!(EdgePropertyList[1 .. $]);
    }
}

mixin template singleEdgeProperty (alias property)
{
    mixin(`public property.Type[] ` ~ property.name ~ `;`);
}

Ah, nice! I knew I was missing a trick somewhere with mixin templates, but I haven't used them for sufficiently long that my brain wasn't in the right place to find it. Your solution is _much_ more elegant than what I have now.

The string mixin is hidden away in singleEdgeProperty, but it's still there.

To get rid of it, you'd have take a different approach, I think.

Yea, makes sense. I'm probably going to hang onto the broader details of the approach (a string mixin or two isn't _that_ horrendous...) because there are some other aspects to it that I would like to play with. But your suggested alternative is interesting to consider.

Thanks very much for the useful ideas! :-)

Reply via email to