Руководство по Ada (Ada 2022)
12.5.4 Типы формального доступа
Категория, определённая для типа формального доступа, — это категория всех типов доступа.
Синтаксис
Правила легитимности
Для типа формального доступа к объекту, указанные подтипы формального и фактического типов должны статически совпадать.
Если и только если модификатор general_access_modifier constant применяется к формальному типу, то фактический тип должен быть типом доступа к константе. Если модификатор general_access_modifier all применяется к формальному типу, то фактический тип должен быть типом общего доступа к переменной (см. 3.10). Если и только если подтип формального типа исключает null, то подтип фактического типа также должен исключать null.
Для подтипа формального доступа к подпрограмме, указанные профили формального и фактического типов должны соответствовать подтипам.
Примеры
Пример типов формального доступа:
-- типы формального доступа в обобщенном пакете
generic
type Node is private;
type Link is access Node;
package P is
...
end P;
type Node is private;
type Link is access Node;
package P is
...
end P;
-- могут быть сопоставлены с фактическими типами
type Car;
type Car_Name is access Car;
type Car_Name is access Car;
type Car is
record
Pred, Succ : Car_Name;
Number : License_Number;
Owner : Person;
end record;
record
Pred, Succ : Car_Name;
Number : License_Number;
Owner : Person;
end record;
-- в следующем экземпляре обобщенного пакета
package R is new P(Node => Car, Link => Car_Name);