https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93690
--- Comment #2 from Florian Schiffmann <floschiffmann at gmail dot com> --- Hi Steve, the complication here is that it is not the type with the assignment that is a vector but the Outer type. The type with assignment is a scalar member of the vector type. Hence the first question should be how the intrinsic assignment of the vector of Type(outer) is handled. Thanks to FortranFan on the comp.lang.fortran group: cite [Note 18-007r1 document toward Fortran 2018 states in Section 10.2.1.3 Interpretation of intrinsic assignments, page 161, paragraph 6: "If the variable is an array, the assignment is performed element-by-element on corresponding array elements of the variable and expr" and on page 163, paragraph 13: "An intrinsic assignment where the variable is of derived type is performed as if each component of the variable were assigned from the corresponding component of expr using .. defined assignment for each nonpointer nonallocatable component of a type that has a type-bound defined assignment consistent with the component, intrinsic assignment for each other nonpointer nonallocatable component .." ] According to me, this means that the intrinsic assignment working on outer should work element wise. Then for each element the scalar assignment should be called (not the vector version). I can't say I am sure about it either as reading the standard gives me a headache :). However, to me it makes sense as with my interpretation: You have to inspect the Types containing the one with TBA vs your interpretation: You have to inspect the Types containing the one with TBA plus all direct and indirect uses of the types (if vectors or not) to decide whether the assignment has to be an elemental subroutine. Not sure whether I made perfect sense there but I hope you can decipher my idea. Flo