Definitely the correct response.
Also,
> c++ allows 0-width spaces in variable names. Where's your god now?
Nowhere. We have strayed maximal distance from god's light and are currently in orbit around Satan.
Definitely the correct response.
Also,
> c++ allows 0-width spaces in variable names. Where's your god now?
Nowhere. We have strayed maximal distance from god's light and are currently in orbit around Satan.
Is that true though ?
> A valid identifier must begin with a non-digit character (Latin letter, underscore, or Unicode character of class XID_Start) and may contain non-digit characters, digits, and Unicode characters of class XID_Continue in non-initial positions. Identifiers are case-sensitive (lowercase and uppercase letters are distinct), and every character is significant. Every identifier must conform Normalization Form C.
This seems to be the only limitation for that to be true.
So the question is does 0-width space (U+200B) survive canonical decomposition, followed by canonical composition?
It feels like it does to me.
Clang logs a warning about potentially invisible characters every time you use them. g++ just compiles the code without warning, even with -Wall and -Wpedantic.
What clang _doesn't_ warn for, is the use of the left-to-right override character. This can be used to confuse the victims of your code even more.