Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29234 讨论

PURE function with EXTERNAL function as argument

mohanmuthu
新分销商 I
833 次查看

I am trying to pass a pure function as an argument to another pure function. Is it permissible?

 

For example,

pure integer function func1(func2, arg2)
    external func2
    integer, intent(in) arg2
    func1 = func2(arg2)
end function func1

pure integer function func1(arg1)
    integer, intent(in) arg1
    func1 = arg1*arg1
end function func1

 I attempted it, but I'm getting an error that the external procedure must be declared pure. If its permissible, how to define the external function as pure.

1 解答
Arjen_Markus
名誉分销商 II
816 次查看

Rather than specifying func2 as an external, you should specify the exact interface:

interface 
    pure integer function func2( arg )
        integer, intent(in) :: arg
    end function func2
end interface

Otherwise the compiler has no way of knowing what the function argument is doing.

在原帖中查看解决方案

2 回复数
Arjen_Markus
名誉分销商 II
817 次查看

Rather than specifying func2 as an external, you should specify the exact interface:

interface 
    pure integer function func2( arg )
        integer, intent(in) :: arg
    end function func2
end interface

Otherwise the compiler has no way of knowing what the function argument is doing.

mohanmuthu
新分销商 I
796 次查看

Thank you Arjen_Markus, I could make it work with your solution.

0 项奖励
回复