12.5.5 Formal Interface Types
The category determined for a formal interface type
is the category of all interface types.
The actual type shall be a descendant of every progenitor
of the formal type.
The actual type shall be a limited, task, protected,
or synchronized interface if and only if the formal type is also, respectively,
a limited, task, protected, or synchronized interface.
Example of the use
of a generic with a formal interface type, to establish a standard interface
that all tasks will implement so they can be managed appropriately by
an application-specific scheduler:
type Root_Work_Item is tagged private;
type Managed_Task is task interface;
type Work_Item(<>) is new Root_Work_Item with private;
package Server_Manager is
task type Server is new Managed_Task with
entry Start(Data : in out Work_Item);
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe