Руководство по Ada (Ada 2022)
13.9.2 Атрибут Valid
Атрибут Valid может использоваться для проверки валидности данных, полученных в результате неявного преобразования, ввода, взаимодействия с другими языками и т. п.
Статическая семантика
Для префикса X, обозначающего скалярный объект (после любого неявного разыменования), определен следующий атрибут:
X'Valid
Возвращает True тогда и только тогда, когда объект, обозначаемый X, является нормальным, имеет валидное представление, а затем, если предыдущие условия выполняются, значение X также удовлетворяет предикатам номинального типа подтипа X. Значение этого атрибута имеет предопределенный тип Boolean.
ПРИМЕЧАНИЕ 1 Невалидные данные могут быть созданы в следующих случаях (не считая ошибочного или непредсказуемого выполнения):
неинициализированный скалярный объект,
результат неявного преобразования,
ввод,
взаимодействие с другим языком (включая машинный код),
прерывание присваивания,
прерывание присваивания из-за неудачи проверки, определенной языком (см. 11.6), и
использование объекта, адрес которого был указан.
ПРИМЕЧАНИЕ 2 Определение, является ли X нормальным и имеет ли он валидное представление как часть вычисления X'Valid, не рассматривается как включающее вычисление X; следовательно, проверка валидности объекта, который невалиден или аномален, не является ошибкой. Определение, удовлетворяет ли X предикатам своего номинального подтипа, может включать вычисление X, но только после того, как будет определено, что X имеет валидное представление.
Если X является volatile, вычисление X'Valid рассматривается как чтение X.
ПРИМЕЧАНИЕ 3 Атрибут Valid может использоваться для проверки результата вызова экземпляра Unchecked_Conversion (или любой другой операции, которая может возвращать невалидные значения). Однако обработчик исключений по-прежнему полезен, так как реализации разрешено генерировать исключение Constraint_Error или Program_Error, если они обнаруживают использование невалидного представления (см. 13.9.1).