¿Cuál es el resultado de una función de caracteres de longitud supuesta y por qué debería evitarse?

En respuesta a una preguntasobre los resultados de la función de caracteres de longitud no constante, una respuesta menciona "resultado de la función de longitud supuesta" pero no entra en detalles.

Si quiero devolver un resultado de carácter donde la longitud depende de otra cosa, esa respuesta menciona objetos automáticos y longitud diferida como posibles enfoques:

function deferred_length(x)
  character(*), intent(in)  :: x
  character(:), allocatable :: deferred_length
  deferred_length = x//'!'
end function

o

function automatic(x)
  character(*), intent(in)  :: x
  character(LEN(x)+1)       :: automatic
  automatic = x//'!'
end function

¿Qué es un resultado de función de longitud supuesta y cómo se diferencia de las formas anteriores? Además, ¿por qué tal mención se relega a una nota al pie?

Respuestas a la pregunta(1)

Su respuesta a la pregunta