I believe my suggestion was to "overload" the function, and use template constraints to indicate whether the by-value or by-ref overload should be used.