When defining an abstract type with generic operators that map to deferred bindings and using these operators in an expression, the development branch of gfortran 4.5.0 (20090925) gives the errors shown below the program below. In case it helps to know, IBM XL Fortran 12.1 compiles the program without errors or warnings.
Damian $ cat abstract_algebra.f03 module abstract_algebra implicit none private public :: rescale public :: object type ,abstract :: object contains procedure(assign_interface) ,deferred :: assign procedure(product_interface) ,deferred :: product generic :: assignment(=) => assign generic :: operator(*) => product end type abstract interface function product_interface(lhs,rhs) result(product) import :: object class(object) ,intent(in) :: lhs class(object) ,allocatable :: product real ,intent(in) :: rhs end function subroutine assign_interface(lhs,rhs) import :: object class(object) ,intent(inout) :: lhs class(object) ,intent(in) :: rhs end subroutine end interface contains subroutine rescale(operand,scale) class(object) :: operand real ,intent(in) :: scale operand = operand*scale ! preferred implementation operand = operand%product(scale) ! alternate implementation end subroutine end module $ /usr/local/gfortran/bin/gfortran-4.5 -c abstract_algebra.f03 abstract_algebra.f03:9.54: procedure(assign_interface) ,deferred :: assign 1 Error: Assignment operator interface at (1) must not redefine an INTRINSIC type assignment abstract_algebra.f03:34.14: operand = operand*scale ! preferred implementation 1 Error: Operands of binary numeric operator '*' at (1) are CLASS(object)/REAL(4) abstract_algebra.f03:35.14: operand = operand%product(scale) 1 Error: ABSTRACT INTERFACE 'product_interface' must not be referenced at (1) $ /usr/local/gfortran/bin/gfortran-4.5 --version GNU Fortran (GCC) 4.5.0 20090925 (experimental) -- Summary: Errors in applying operator/assignment to an abstract type Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: damian at rouson dot net GCC build triplet: Mac OS X 10.5.8 GCC host triplet: Mac OS X 10.5.8 GCC target triplet: Mac OS X 10.5.8 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41556