Note that you cannot overload a function based on its return type. For example:

// WRONG CODE
std::string getValue()
{
  return "hello";
}

int getValue()
{
  return 0;
}

int x = getValue();

This will cause a compilation error as the compiler will not be able to work out which version of getValue to call, even though the return type is assigned to an int.