I want to learn the rules (if any) about usage of spaces for writing correct operator overloads.
I've seen different forms:
T operator+(T t1, T t2) /* etc. */
T operator+ (T t1, T t2) /* etc. */
T operator +(T t1, T t2) /* etc. */
T operator + (T t1, T t2) /* etc. */
I'm talking about the space(s) between the operator keyword, operator characters and first parenthesis.
Which one(s) is(are) correct? What is(are) the preferred one(s) over the others? Are some of them wrong, or, are some of them right in certain cases and wrong in others (and vice-versa)?
In short: do the spaces have any special meaning here (in this particular subject (I don't ask about use of spaces generally in code)?
If so, when and why? If not, what are considered as best practices?