title: Why is parameter in contravariant position?
body: <p>I'm trying to use a covariant type parameter inside a trait to construct a case-class like so:</p>
  
  <pre><code>trait MyTrait[+T] {
    private case class MyClass(c: T)
  }
  </code></pre>
  
  <p>compiler says:</p>
  
  <pre><code>error: covariant type T occurs in contravariant position in type T of value c
  </code></pre>
  
  <p>I then tried the following but it also didn't work: </p>
  
  <pre><code>trait MyTrait[+T] {
    private case class MyClass[U &lt;: T](c: U)
  }
  </code></pre>
  
  <p>the error this time is:</p>
  
  <pre><code>error: covariant type T occurs in contravariant position in type &gt;: Nothing &lt;: T of type U
  </code></pre>
  
  <p>Could somebody explain why the T is in a covariant position here and suggest a solution for this problem? 
  Thx!</p>