title: C# variance annotation of a type parameter, constrained to be value type
body: <p>It is possible in C# to add variance annotation to type parameter, constrained to be value type:</p>
  
  <pre><code>interface IFoo&lt;in T&gt; where T : struct
  {
    void Boo(T x);
  }
  </code></pre>
  
  <p>Why is this allowed by compiler if variance annotation makes completely no sense in a such situation?</p>