Почему в C11 или C++11 нет символьного литерала ASCII или UTF-8?

Почему нет символьного литерала UTF-8 в C11 или C++11, хотя строковые литералы UTF-8 есть? Я понимаю, что, вообще говоря, символьный литерал представляет собой одиночный символ ASCII, который идентичен однооктетной кодовой точке UTF-8, но ни C, ни C++ не говорят, что кодировка должна быть ASCII.

По сути, если я правильно прочитал стандарт, нет никакой гарантии, что '0'будет представлять целое число 0x30, однако u8"0"должно представлять последовательность символов 0x30 0x00.

РЕДАКТИРОВАТЬ:

Я знаю, что не каждая кодовая точка UTF-8 поместится в char.Такой литерал будет полезен только для кодовых точек с одним октетом (также известных как ASCII), поэтому я думаю, что было бы более подходящим назвать его «литералом символов ASCII», поэтому вопрос остается в силе. Я просто решил сформулировать вопрос с помощью UTF-8, потому что существуют строковые литералы UTF-8. Единственный способ, который я могу себе представить, чтобы гарантировать переносимость значений ASCII, - это написать константу для каждого символа, что было бы не так уж плохо, учитывая, что их всего 128, но все же...

17
задан Yakk - Adam Nevraumont 19 February 2013 в 20:23
поделиться