Применяется ли лазейка для псевдонимов к подписанным символам?

В C++ есть лазейка для псевдонимов, которая позволяет объектному представлению любого объекта быть прочитанным или записанным с помощью некоторых указателей символьного типа.

Это относится только к char и unsigned char или также к signed char?

Ответы

Ответ 1

Нет, это положение не распространяется на signed char.

[basic.lval]

8 Если программа пытается получить доступ к сохраненному значению объекта через glvalue другого, чем один из следующих типов поведение не определено:

  • [...]
  • тип char, unsigned char или std​::​byte.

Цитата выше содержит самый последний пункт, который относится к псевдонимам с типами символов. signed char исключен.

Тем не менее, это также является частью предмета CWG Issue 350, и поэтому может измениться. Учитывая направление проблемы, намерение состоит в том, чтобы она была (в конечном счете, надеюсь?) Четко определена.