Covariant means that 'this' can substitute for 't', i.e. a pure function is a match for an impure type.
0 types are distinct 1 this is covariant with t 2 arguments match as far as overloading goes, but types are not covariant 3 cannot determine covariance because of forward references *pstc STCxxxx which would make it covariant
See Implementation
Covariant means that 'this' can substitute for 't', i.e. a pure function is a match for an impure type.