While this is a legitimate complaint, it also applies (though in fewer ways) to C. How do you parse this?
(x)(y);
Is that a call of function (or function pointer) `x` with argument `y`? Or is it a cast of `y` to type `x`? You need to have kept track of of all the typedefs in the code prior to that point to know.