Previously, the wrappers failed to disambiguate C++ overloads in
some situations when the overloads had more than one argument.
The wrappers assign a "penalty" to each argument depending on how
well it matches the parameter type. Previously, when comparing
overloads, only the argument from each with the largest penalty
was considered. Now all arguments are considered.