You need to do something like:
let inline add< ^a, ^b, ^c when (^a or ^b) : (static member (+) : ^a * ^b -> ^c)> x y =
((^a or ^b) : (static member (+) : ^a * ^b -> ^c)(x,y))
Note the following caveats:
- You need to insert a space before the first occurrence of ^a, since otherwise the compiler can't parse the two characters "<^".
- I wasn't able to use the (+) operator on the right hand side directly (I got an ugly error message) - I needed to use a member invocation expression instead. This may be a bug.