In some languages, particularly in C++, there are constructs which are syntactically ambiguous—they could be either declarations or expressions, and CC Mode cannot tell for sure which. Often such a construct is one of the operators ‘*’ or ‘&’ surrounded by two identifiers.
Experience shows that very often when such a construct is a declaration it will be written with the operator touching exactly one of the identifiers, like:
. Whether such code is fontified depends on the setting of
When the construct is an expression there will often be white space both before and after the operator or there will be no white space around it at all, like:
foo * bar
Such code is not fontified as a declaration. (Typically, the identifiers don't get a non-default face.)
For clarity's sake, we emphasize that the “asymmetry” rule in this section only applies when CC Mode cannot disambiguate a construct in any other way.