Compiles:
let inline f< ^T when ^T : (static member (<<<) : ^T * int -> ^T) > (x : ^T) = x <<< 1
Does not compile:
let inline f< ^T when ^T : (static member (>>>) : ^T * int -> ^T) > (x : ^T) = x >>> 1
Errors:
- Attempted to parse this as an operator name, but failed
- Unexpected symbol '>' in member signature. Expected ')' or other token.
- A type parameter is missing a constraint 'when ^T : (static member ( >>> ) : ^T * int32 -> ^T)'
Adding spaces doesn't help; this line yields the same compiler errors:
let inline f< ^T when ^T : (static member ( >>> ) : ^T * int -> ^T) > (x : ^T) = x >>> 1
I've searched both the documentation and the specification, to no avail. Is this a bug? Is there some way to include the >
characters in the member signature?