Какой контракт устанавливает объявленный тип возвращаемого значения функции, не имеющей тип void?
void
Значение, возвращаемое с помощью return, должно быть совместимо с объявленным типом возвращаемого значения.
return
Каждый параметр должен иметь в точности тот же тип, что и возвращаемое значение.
Вызывающая сторона всегда получает строку независимо от объявления.
Функция никогда не должна использовать оператор return со значением.