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

This generic type bound procedure reference has two or more specific procedures with the same type/rank/keyword signature.

Nathan_Champagne
New Contributor I
858 Views

I am working with a list example in Intel Fortran on Windows (2013.0.089). However, the build halts with the following error:

1>X:\Fortran\Fortran2003\list_test\src\main.f90(30): error #8443: This generic type bound procedure reference has two or more specific procedures with the same type/rank/keyword signature.   [ADD]
1>compilation aborted for X:\Fortran\Fortran2003\list_test\src\main.f90 (code 1)

The project files are in the attached archive (same code for DPD200175597). Any thoughts?

Thanks.

0 Kudos
1 Solution
IanH
Honored Contributor III
858 Views
The addValue binding in list (part of the add type bound generic) takes a class(*) second argument. A class(*) scalar dummy is type/kind/rank compatible with any scalar, so that argument is not distinguishable from the second arguments of the other add* bindings in that generic. So the compiler doesn't know which specific binding to pick when it see the reference to the generic in the main program. See 12.4.3.4.5 in F2008. (I think the add* binding forms that take the intrinsic types are redundant anyway - all they do is just create a temporary allocatable object?)

View solution in original post

0 Kudos
2 Replies
IanH
Honored Contributor III
859 Views
The addValue binding in list (part of the add type bound generic) takes a class(*) second argument. A class(*) scalar dummy is type/kind/rank compatible with any scalar, so that argument is not distinguishable from the second arguments of the other add* bindings in that generic. So the compiler doesn't know which specific binding to pick when it see the reference to the generic in the main program. See 12.4.3.4.5 in F2008. (I think the add* binding forms that take the intrinsic types are redundant anyway - all they do is just create a temporary allocatable object?)
0 Kudos
Nathan_Champagne
New Contributor I
858 Views
Thanks for the help.
0 Kudos
Reply