1 2 3 4 5 6 7 8 9
trait Cov[+A] trait Inv[-A] object varianceExploit { type l[-a] = Cov[a] type x = {type l[-a] = Cov[a]} def foo[M[_]] = () foo[({type l[+a] = Inv[a]})#l] }