I have followed your suggestion and changed const &in to become const &inout.
I do find the automatic construction of a temporary variable passed to a const &inout parameter useful, so I have attempted a modification to make that work. I have attached it as a patch. It seems to work in my tests, but I am not sure if I am properly handling all cases. If you don't incorporate this change officially, would you mind looking it over to see if I missed anything obvious to you?
I'm going to try and hack something together. My immediate purpose may be satisfied by adding more exception information when the exception is set within "CallSystemFunction." I'll let you know if I come up with anything clever.