Yes.
It's for backwards compatibility for no & before functions and the no need for * for functions is to make it possible to invoke them as if there were functions.Hmm I would understand making the parentheses around *inc_one optional, but operators? Hmm what a strnge language C++ is.
Both these traits are inherited from C.
And btw, the paranthesises are mandatory because of operator precedence.
result = *inc_one(1);
Basically does
1) inc_one(1)
2) *
3) result = result;
Therefore, you must force it to dereference the pointer first.
Well, shrug. I wouldn't because I'm quite fond of calling function pointers using function syntax.I would make
result = *inc_one(1);
mandatory