Afaik for overloading, roughly the number of arguments must be different and/or typed different, as that is the signature used for which function to call. So not on the return type.
If the right version is chosen, on those criteria, it must then match the use for the rest of signature, including return value.