Hello Conor,
the wikipedia page you linked says:
"The Clang parser handles the situation in a completely different
way, namely by using a non-reference lexical grammar. Clang's lexer does
not attempt to differentiate between type names and variable names: it
simply reports the current token as an identifier. The parser then uses
Clang's semantic analysis library to determine the nature of the
identifier."
This would be my advice: defer resolving ambiguities to the
type-checking phase, where you also can give better error message.
--Andreas