Справочник Ada 2012
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);