module int_ptr_vector_tests

implicit none

type int_vector
   integer :: array(3)
 contains
   procedure :: get_single_vec
   generic :: get => get_single_vec
end type int_vector

interface get
   module procedure get_single_vec
end interface

contains

function get_single_vec(self, index) result(item)
  class( int_vector ) :: self
  integer :: index
  integer :: item

  item = self%array(index)

end function get_single_vec

subroutine int_vec_print(vec)
  type( int_vector ) :: vec
  integer :: i

  print *, [( vec%get(1), i = 1, 3 )]

end subroutine int_vec_print

end module int_ptr_vector_tests

