Currently structs (and unions and arrays) are unsupported in <code>-[NSInvocation invoke]</code> on x86_64, as the rules to pass them are quite complex. This needs to be implemented for methods like <code>substringWithRange:</code> to work via forwarding. This will require a lot of tests to make sure each and every corner case from the ABI (and there are many) is handled.

On Win64, the situation is luckily better, because for once, Microsoft did the sensible thing and everyone else didn't.