Annex E (informative) Conformance with UAX #31 [uaxid]

E.2 R1 Default identifiers [uaxid.def]

E.2.2 R1a Restricted format characters [uaxid.def.rfmt]

If an implementation of UAX #31 wishes to allow format characters such as U+200d zero width joiner or U+200c zero width non-joiner it must define a profile allowing them, or describe precisely which combinations are permitted.
C++ does not allow format characters in identifiers, so this does not apply.