4.9. СТАТИЧЕСКИЕ ВЫРАЖЕНИЯ И СТАТИЧЕСКИЕ ПОДТИПЫ

Некоторые выражения скалярного типа называются статическими. Аналогично статическими называют некоторые дискретные диапазоны, а обозначения типов для некоторых скалярных подтипов называют обозначающими статические подтипы.

Выражение скалярного типа называется статическим тогда и только тогда, когда каждое первичное является одним из перечисленных в пунктах от а до з, а каждая операция — это предопределенная операция и вычисление выражения дает значение (т. е. не возбуждает исключения).

а. Литерал перечисления (включая символьный литерал).

б. Числовой литерал.

в. Именованное число.

г. Заданная явным описанием константа статического подтипа и инициализированная статическим выражением.

д. Вызов функции, имя которой — знак операции, обозначающий предопределенную операцию, включая расширенное имя; каждый фактический параметр должен быть статическим выражением.

е. Определяемый в языке атрибут статического подтипа; если атрибут — функция, фактические параметры должны быть также статическими выражениями.

ж. Квалифицированное выражение, обозначение типа которого задает статический подтип, а операнд — статическое выражение.

з. Заключенное в скобки статическое выражение.

Статическим является диапазон, границы которого — статические выражения. Статическим является ограничение диапазона, если составляющие его атрибут или простое выражение являются статическими. Статический подтип — это либо скалярный базовый тип, отличный от формального типа настройки, либо скалярный подтип, образованный наложением на статический подтип либо ограничения статическим диапазоном, либо ограничения плавающего или фиксированного типа, ограничение диапазона которого, если оно есть, является статическим. Статический дискретный диапазон — это либо статический подтип, либо статический диапазон. Статическое ограничение индекса — это ограничение индекса, для которого статическим является каждый подтип индекса соответствующего индексируемого типа и для которого статическим является каждый дискретный диапазон. Статическое ограничение дискриминанта — это ограничение дискриминанта, для которого статическим является подтип каждого дискриминанта и в котором статическим является каждое выражение.

Примечание. Точность вычисления статического выражения вещественного типа определена правилами, данными в разд. 4.5.7. Если результат не является модельным (или хранимым) числом этого типа, то значение выражения, полученное при вычислении во время компиляции, не обязано совпадать со значением, которое получится при вычислении во время счета.

Атрибуты массивов не являются статическими, в частности статическим не является атрибут RANGE.

Ссылки: атрибут 4.1.4, базовый тип 3.3, возбуждение исключений 11, выражение 4.4, граница диапазона 3.5, дискретный диапазон 3.6, дискретный тип 3.5, именованное число 3.2, инициализация 3.2.1, исключение 11, квалифицированное выражение 4.7, константа 3.2.1, литерал перечисления 3.5.1, модельное число 3.5.6, неявное описание 3.1, обозначение типа 3.3.2, ограничение диапазона 3.5, описание константы 3.2.1, подтип 3.3, предопределенная операция 4.5, символьный литерал 2.5, скалярный тип 3.5, фактический параметр 6.4.1, фактический параметр настройки 12.3, формальный параметр настройки 12.1.2, функция 6.5, хранимое число 3.5.6, числовой литерал 2.4.