And for anyone (like me) that thought, "ok that's fair enough, what's the problem?", the issue is that it could also be interpreted as generic arguments.
A full explanation of the ambiguity is in the linked issue:
let a = (b<c, d>(e));
This can either mean a tuple
let a = ((b < c), (d > e));
Or a pair of generic arguments.
let a = b::<c, d>(e);