Fortran Wiki
Type coercion

Proposal: Support type coercion for procedure call arguments.

Fortran has avoided type coercion for procedure arguments partly due to legacy design issues. Support for multiple types normally is provided in the form of multiple specific procedures in a set of generic procedures. Unfortunately, this design becomes very inefficient for procedures with multiple arguments.

One argument against automatic type coercion is that it will complicate generic-to-specific procedure mappings, To avoid this problem, type coercion could be an explicit interface attribute.

For example, there could be an ACCEPT() attribute. Within the parenthesis is a comma-delimited list of all acceptable coercion source type. “KIND=‘ indicates that any kind is allowed for that type, or possibly only allow KINDs with equal or smaller capacities than the actual type.