В C ++ мы можем использовать самые разные символы Юникода в идентификаторах.Например, вы можете назвать переменную résumé
.
. Эти акцентированные e
s могут быть представлены различными способами: либо в виде предварительно составленного символа, либо в виде простого e
с комбинирующим символом ударения.Многие приложения нормализуют такие строки, так что, казалось бы, идентичные строки действительно совпадают.
Глядя на стандарт C ++, я не вижу ничего, что требует компилятора для нормализации идентификаторов, поэтому переменная résumé
может отличаться от переменной résumé
.(В моих тестах кажется, что MSVC и clang не нормализуют идентификаторы.)
Есть ли что-нибудь, что запрещает компилятору выбирать нормальную форму?Если нет, то на какой фазе перевода должна произойти нормализация?
[Для ясности: я говорю об идентификаторах, а не о строковых литералах.]