Fortan позволяет элементарным подпрограммам иметь аргументы intent (inout) и intent (out), но элементарным функциям разрешено только intent (in).
Почему это? Это просто стилистическое соглашение или есть что-то общее в вызове функций и вызове подпрограмм?
Другими словами,
Elemental Integer Function FOO(i)
Integer, intent(in) :: i
...
FOO=something
End Function
и
Elemental Subroutine FOO(i, v)
Integer, intent(in) :: i
Integer, intent(out) :: v
...
v=something
End Subroutine
& mdash; эти реализации FOO эквивалентно эффективны?