member
не имеет представлений ловушек, поскольку uint64_t
не имеет представлений ловушек.
7.20.1.1 Целочисленные типы точной ширины
2 Имя определения типа uint N _t обозначает целочисленный тип без знака с шириной N и без битов заполнения.Таким образом, uint24_t обозначает такой целочисленный тип без знака с шириной ровно 24 бита.
Нет битов заполнения.И из следующего раздела мы узнаем:
6.2.6.2 Целочисленные типы
1 Для целых типов без знака, кроме unsigned char,биты представления объекта должны быть разделены на две группы: биты значения и биты заполнения (не должно быть ни одной из последних).Если имеется N битов значения, каждый бит должен представлять различную степень 2 от 1 до 2 N - 1 , так что объекты этого типа должны быть способны представлять значения от 0 до 2 N - 1 с использованием чистого двоичного представления;это должно быть известно как представление значения.Значения любых битов заполнения не определены. 53)
Где примечание 53, несмотря на то, что оно ненормативное, говорит нам, что эти биты заполнения (если они существуют) могут использоватьсяto trap:
53) Некоторые комбинации битов заполнения могут генерировать представления прерываний, например, если один бит заполнения является битом четности.Независимо от этого, никакая арифметическая операция над допустимыми значениями не может генерировать представление прерываний, кроме как как часть исключительного условия, такого как переполнение, и это не может происходить с неподписанными типами.Все другие комбинации битов заполнения являются альтернативными представлениями объекта значения, заданного битами значения.
Хотя биты значений никогда не могут содержать недопустимый шаблон.
Таким образом, вы не можете создать представление ловушки uint64_t
в правильно сформированной программе.Имейте в виду, что ваша программа имеет UB из-за доступа за пределы, но это не вызвано возможностью представления ловушек.Все не определено само по себе.