Нет, и в C, и в C ++ возвращаемый тип функции фиксирован, то есть он всегда будет возвращать один и тот же тип.Даже если вы попытаетесь привести как часть оператора return
, возвращаемое значение будет неявно преобразовано в возвращаемый тип функции - если это возможно.Если неявное преобразование невозможно, вы получите ошибку компиляции.
Так что
returntype foo(...) {.... return x;}
всегда будет возвращать значение типа returntype
InC ++ вы можете использовать шаблоны, чтобы «изменить» тип возвращаемого значения, но как только определение шаблона будет решено, это та же самая история.Приведение не изменит реальный тип возврата.