title: Generics and "One of the parameters of a binary operator must be the containing type" Error
body: <p>When declaring a binary operator, at least one of the operand types must be the containing type. This sounds a good design decision in general. However, I didn't expect the following code to cause this error:</p>
  
  <pre><code>public class Exp&lt;T&gt;
  {
      public static Exp&lt;int&gt; operator +(Exp&lt;int&gt; first, Exp&lt;int&gt; second)
      {
          return null;
      }
  }
  </code></pre>
  
  <p>What is the problem with this operator? Why this case falls into operator overloading restrictions of c#? is it dangerous to allow this kind of declaration?</p>