On Wednesday, 20 June 2018 at 14:39:48 UTC, Per Nordlöw wrote:
Is there a way to avoid compile-time-string-concat plus mixin here?

Using __traits(getMember, ...) should compile faster, right?

T toDefaulted(T)(scope const(char)[] value, T defaultValue) @safe pure nothrow @nogc
if (is(T == enum))
{
    // doesn't need `std.conv.to`
    switch (value)
    {
static foreach (member; __traits(allMembers, T)) // prevents call to slower `EnumMembers`
        {
        case member:
return __traits(getMember, T, member); // NOTE this is slower: mixin(`return T.` ~ member ~ `;`);
        }
    default:
        return defaultValue;
    }
}

Reply via email to