title: Inline plus operator in struct throws an exception (F#)
body: <p>Why does the <code>fail</code> value throw an exception? <code>fine</code> value works. If I remove <code>inline</code> or if I convert <code>'t</code> into <code>float</code> then it works.</p>
  
  <pre><code>[&lt;Struct&gt;]
  type Test&lt;'t&gt; =
    val x: 't
    val y: 't
    new (x,y) = { x = x; y = y }
  
    static member inline (+) ((x,y), a: _ Test) = 0
    static member inline (-) ((x,y), a: _ Test) = 0
  
  let a = 1.,2.
  let b = Test(1.,2.)
  let fine = a - b
  let fail = a + b
  </code></pre>
  
  <p>error message:</p>
  
  <blockquote>
    <p>Unhandled Exception: System.TypeInitializationException: The type initializer fo
    r 'AdditionDynamicImplTable<code>3' threw an exception. ---&gt; System.NotSupportedExcep
    tion: Dynamic invocation of op_Addition involving coercions is not supported.
       at Microsoft.FSharp.Core.LanguagePrimitives.dyn@2445[a,b,c](Type aty, Type bt
    y, Unit unitVar0)
       at Microsoft.FSharp.Core.LanguagePrimitives.AdditionDynamicImplTable</code>3..cctor
    ()
       --- End of inner exception stack trace ---
       at Microsoft.FSharp.Core.LanguagePrimitives.AdditionDynamic[T1,T2,TResult](T1
     x, T2 y)
       at .$Program.main@() in C:\Users\olsv\Docume
    nts\Visual Studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\Program.
    fs:line 14
    Press any key to continue . . .</p>
  </blockquote>