When given an overload set, `ReturnType` reports the return type of the first function in the set, so I think this PR could cause a regression: if an overload set's first function has `void` return type but this overload is not used by `map`, the code would work and be correct, but would be rejected with this PR.