Nothrow std.conv.to with explicit default value
Per Nordlöw
per.nordlow at gmail.com
Thu Jun 21 10:40:09 UTC 2018
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;
}
}
More information about the Digitalmars-d-learn
mailing list