Указатель на процедуру, возвращаемый функцией с nagfor

Я пытаюсь использовать указатели процедур как возвращение функции в Фортране. Следующий минимальный код работает с gfortran (протестирован с 4.8.1), но не с nagfor (NAG 6.0):

function foo() result(f_p)
  implicit none
  procedure(), pointer :: f_p
  f_p => null()
end function foo

Нагфор жалуется:

Error: test.f90, line 5: Multiply defined symbol F_P
   detected at ::@F_P
Error: test.f90, line 5: F_P is not a procedure name
   detected at F_P@<end-of-statement>
Warning: test.f90, line 7: Result F_P of function FOO has not been assigned a value
[NAG Fortran Compiler pass 1 error termination, 2 errors, 1 warning]

Почему это?

Примечание: я очень хорошо осознаю опасность утечек памяти при использовании указателей процедур таким образом.

1 ответ

Решение

Я работаю над NAG Fortran Compiler и могу подтвердить, что он еще не реализует эту функцию Fortran 2003 (функции, возвращающие указатели процедур). Поддержка этой функции предварительно запланирована на следующую (6.1) версию.

Другие вопросы по тегам