I don’t think this is a compiler bug. operator(-)
is bind to type(vector)
but not type(vector_parameter)
and thus the compiler complains This binary operation is invalid for this data type.
You either make type(vector)
an abstract type and define some abstract interfaces or move all type-bound procedures to the extended type.
Besides, I find using interface
and type-bound procedures in the same module a bit confusing. To initialize the type using type-bound procedure you could use generic :: assignment(=) => init_sub
. As for interfaces vs type-bound procedures, here is a good discussion: Drawback of type-bound procedures (vs. interfaces)? - Help - Fortran Discourse (fortran-lang.discourse.group).