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`

?

Reply via email to