Optimal implementation of identity function
Per Nordlöw
per.nordlow at gmail.com
Thu Dec 20 13:39:02 UTC 2018
For the default case (`return key`) in
auto adjustKeyType(SomeKey)(const return scope SomeKey key)
const @trusted
{
pragma(inline, true); // must be inlined
static if (is(SomeKey : U[], U)) // is array
{
/* because return value is used only temporarily it's
ok to cast to
* `immutable` to prevent GC-allocations in types
such as
* `sso_string.SSOString` */
return cast(immutable(typeof(key[0]))[])key;
}
else
{
return key;
}
}
I want this function to be optimized away completely when inlined
in release mode.
Is this the best of achieving this with regards to
1. its return type: auto (or is better auto ref) and
2. parameter `key` being qualified as `return scope`
?
More information about the Digitalmars-d-learn
mailing list