Intel Fortran Compiler Bug: overloading binary and unary operator(-) and use with extended types

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).