У меня есть две подпрограммы, разница которых только в порядке аргументов, но я хотел бы использовать их через интерфейс, чтобы при вызове вызывалась правильная в соответствии с порядком аргументов. Компилятор жалуется, что не может их различить, и я предполагаю, что если я использую синтаксис для именованных аргументов при вызове, он не будет знать, какой из них вызывать. Одним из обходных путей было бы использование разных имен для аргументов, но мне было интересно, есть ли способ отключить стиль вызова именованных аргументов.
Пример, это ситуация, которую я пытаюсь обработать
module Foo
interface Bar
module procedure Bar1
module procedure Bar2
end interface
contains
subroutine Bar1(i,r)
integer, intent(in) :: i
real, intent(in) :: r
print *, "bar1"
end subroutine
subroutine Bar2(r,i)
real, intent(in) :: r
integer, intent(in) :: i
print *, "bar2"
end subroutine
end module
program fuux
use Foo
integer :: i
real :: r
r = 5.0
i = 3
call Bar(i,r) ! note that if I call Bar(i=i, r=r) the compiler cannot disambiguate
! so it will complain at the interface statement
end program