引数の順序だけが異なる 2 つのルーチンがありますが、それらをインターフェイス経由で使用して、呼び出されたときに引数の順序に従って適切なルーチンが呼び出されるようにしたいと考えています。コンパイラは、それらを区別できないと不平を言います。私の推測では、呼び出し時に名前付き引数の構文を使用すると、どれを呼び出すかがわからないためです。1 つの回避策は、引数に別の名前を使用することですが、名前付き引数の呼び出しスタイルを無効にする方法があるかどうか疑問に思っていました。
例、これは私が処理しようとしている状況です
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