README
значение ловушки или представление ловушки для типаT
- это битовая комбинация (базового хранилища ), который дает недопустимое значениеT.
. Попытка интерпретировать представление недопустимого значения приведет к неопределенному поведению.
Пусть начнется битва ..
Другой вопрос вызвал бурную дискуссию относительно char
и возможности реализации с trap-представления для него.
Вопрос:
- Может ли
char
иметь значения прерывания?
Цитаты, упомянутые в предыдущем обсуждении:
Эти разделы являются наиболее цитируемыми во время предыдущей аргументации, противоречат ли они?
3.9.1p1
Основные типы[basic.fundamental]
Это определяется реализацией, может ли
char
содержать отрицательные значения. Символы могут быть явно объявленыsigned
илиunsigned
.
char,
,signed char,
иunsigned char
занимают одинаковый объем памяти и имеют одинаковые требования к выравниванию (3.11); то есть они имеют одно и то же объектное представление. Для символьных типов все биты представления объекта участвуют в представлении значения.Для беззнаковых символьных типов все возможные битовые комбинации представления значения представляют числа. Эти требования не выполняются для других типов.
В любой конкретной реализации простой объект
char
может принимать те же значения, что иsigned char
, илиunsigned char;
, который определяется реализацией.
3.9p2 Типы
[basic.types]
Для любого объекта (кроме подобъекта базового класса) тривиально копируемого типа
T,
независимо от того, содержит ли объект допустимое значение типаT
, базовые байты (1.7), составляющие объект, могут быть скопированы в массивchar
илиunsigned char.
Если содержимое массива
char
илиunsigned char
копируется обратно в объект, объект впоследствии должен сохранить свое исходное значение.
char
иsigned char
. - person Tony Delroy   schedule 04.06.2014numeric_limits<>
специализации дляunsigned
-,signed
- и неуказанныхchar
, а также есть членstatic constexpr bool traps
, чтобы вы могли проверять во время компиляции, утверждать, если вам не все равно, и т. Д. - person Tony Delroy   schedule 04.06.2014