Hi All, Happy New Year! I took an interest in a recent clf thread, entitled "comparison between class(*) instances", and submitted an example of a possible implementation. I have attached a reduced version of it. gfortran, back as far as version 7.4.1, gives the expected output: a & b are type pvar T a & b are type pvar F ifort (IFORT) 2021.1 Beta 20201112 gives: a & b are type pvar class default: returning false class default: returning false F a & b are type pvar class default: returning false class default: returning false F This comes about because ifort is using the defined operation to override the intrinsic uses of the operator as defined in 10.1.5 of the standard. I believe that gfortran has this one right, since the first paragraph of 15.4.3.4.2 Defined operations has: "...If the operator is an intrinsic-operator (R608), the number of dummy arguments shall be consistent with the intrinsic uses of that operator, and the types, kind type parameters, or ranks of the dummy arguments shall differ from those required for the intrinsic operation (10.1.5)." ifort gives the expected result if the interface is moved to the main program. Steve, I would be grateful if you would pass this on because my Intel uid seems to have expired. Of course, your thoughts would be welcome. The second attachment does away with the select type constructs by transferring the unlimited polymorphic payloads to deferred length characters and comparing them. The use of unlimited polymorphic actual arguments is leading to invalid reads and the loss of 8 bytes in two blocks because realloc is being finickity about the casting of the arguments. Also, when u and v carry strings, both storage_size and transfer fail because the _len field is not used. I will raise PRs on these issues tomorrow. Regards Paul