Quote Originally Posted by Luciferek View Post
So in other words, * operator as well as & operator are optional for normal functions and are mandatory for class functions?
Yes.

Hmm I would understand making the parentheses around *inc_one optional, but operators? Hmm what a strnge language C++ is.
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.
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.

I would make
result = *inc_one(1);
mandatory
Well, shrug. I wouldn't because I'm quite fond of calling function pointers using function syntax.