Справочник по Ada 95
12.5.4 Формальные типы доступа
Класс, определяемый для формального типа доступа, — это класс всех типов доступа.
Синтаксис
formal_access_type_definition ::= access_type_definition
Правила допустимости
Для формального типа доступа к объекту назначенные подтипы формального и фактического типов должны статически совпадать.
Если и только если модификатор general_access_modifier constant применяется к формальному типу, фактический тип должен быть типом доступа к константе. Если модификатор general_access_modifier all применяется к формальному типу, то фактический тип должен быть общим типом доступа к переменной (см. 3.10).
Для формального типа доступа к подпрограмме назначенные профили формального и фактического типов должны быть совместимы по режиму, а соглашение о вызове фактического типа должно быть защищённым тогда и только тогда, когда соглашение о вызове формального типа — защищённое.
Примеры
Пример формальных типов доступа:
-- формальные типы обобщённого пакета
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);