It appears current Fortran standard (c.f. 2008 C1218) doesn't allow the code shown below, but Intel Fortran compiler raises no errors or warnings:
module m implicit none abstract interface elemental subroutine Ifoo() end subroutine Ifoo end interface procedure(Ifoo), pointer :: foo_ptr end module m