1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
module template_array_04b_m
implicit none
private
public :: test_reverse
requirement default_behavior(t)
type, deferred :: t
end requirement
contains
subroutine swap{T}(x, y)
require :: default_behavior(T)
type(T), intent(inout) :: x, y
type(T) :: tmp
tmp = x
x = y
y = tmp
end subroutine
subroutine test_reverse()
integer :: a(2)
a = [1,2]
print *, a
call swap{integer}(a(1),a(2))
print *, a
end subroutine
end module
program template_array_04b
use template_array_04b_m
call test_reverse()
end program
|