Ответ 1
Обоснование рассматривается Эволюционная рабочая группа 119: N4197 Добавление символов символов u8, [крошечный] Почему нет символов символов u8?, который отслеживал это предложение и говорит:
У нас есть пять префиксов кодирования для строковых литералов (none, L, u8, u, U) но только четыре для символьных литералов - недостающий - u8 для символьные литералы.
Это имеет значение для реализаций, где узкий исполняемый символ set не является ASCII. В этом случае литералы букв u8 предоставили бы идеальный способ писать символьные литералы с гарантированным ASCII кодирование (кодировка U8 с одним кодом - это точно ASCII), но... мы их не предоставляем. Вместо этого самое лучшее, что можно сделать, это что-то вроде этого:
char x_ascii = { u'x' };
... где мы получим сужение ошибки, если код не помещается в 'char'. (Заметим, что это не совсем то же самое, что и u8'x ', что дайте нам ошибку, если код не был представлен как единый кода в UTF-8.)