[uaxid.def.general] (original) (raw)
UAX #31 specifies a default syntax for identifiers based on properties from the Unicode Character Database, UAX #44.
The general syntax is
:= * ( +)*
where <Start> has the XID_Start property,<Continue> has the XID_Continue property, and<Medial> is a list of characters permitted between continue characters.
For C++ we add the character U+005f low line, or _, to the set of permitted <Start> characters, the set is empty, and the characters are unmodified.
In the grammar used in UAX #31, this is
:= * := XID_Start + U+005f := + XID_Continue