See: http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/12ac1683f64da0b8
! type t_a is public; type t_b is private interface operator(+) module procedure add_t_a, add_t_b end interface contains pure function add_t_a(a1,a2) result(a) type(t_a) :: a type(t_a), intent(in) :: a1, a2 pure function add_t_b(b1,b2) result(b) type(t_b) :: b type(t_b), intent(in) :: b1, b2 Using NAG the output is: Extension: Dummy B1 of ADD_T_B in generic + exposes PRIVATE type T_B (Extension == Fortran 2003.) -- Summary: -std=95: Reject public procedure with private derv. type argument Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: burnus at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36383