No, function overloading in C++ is not based solely on return types. Overloaded functions must have different parameter lists to be distinguishable. Return types alone cannot differentiate between overloaded functions.