2016 Update
This commit is contained in:
parent
948b86eafa
commit
dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions
42
Task/Constrained-genericity/Fortran/constrained-genericity.f
Normal file
42
Task/Constrained-genericity/Fortran/constrained-genericity.f
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
module cg
|
||||
implicit none
|
||||
|
||||
type, abstract :: eatable
|
||||
end type eatable
|
||||
|
||||
type, extends(eatable) :: carrot_t
|
||||
end type carrot_t
|
||||
|
||||
type :: brick_t; end type brick_t
|
||||
|
||||
type :: foodbox
|
||||
class(eatable), allocatable :: food
|
||||
contains
|
||||
procedure, public :: add_item => add_item_fb
|
||||
end type foodbox
|
||||
|
||||
contains
|
||||
|
||||
subroutine add_item_fb(this, f)
|
||||
class(foodbox), intent(inout) :: this
|
||||
class(eatable), intent(in) :: f
|
||||
allocate(this%food, source=f)
|
||||
end subroutine add_item_fb
|
||||
end module cg
|
||||
|
||||
|
||||
program con_gen
|
||||
use cg
|
||||
implicit none
|
||||
|
||||
type(carrot_t) :: carrot
|
||||
type(brick_t) :: brick
|
||||
type(foodbox) :: fbox
|
||||
|
||||
! Put a carrot into the foodbox
|
||||
call fbox%add_item(carrot)
|
||||
|
||||
! Try to put a brick in - results in a compiler error
|
||||
call fbox%add_item(brick)
|
||||
|
||||
end program con_gen
|
||||
Loading…
Add table
Add a link
Reference in a new issue