12.5.3 Formal Array Types
The category determined for a formal array type is
the category of all array types.
For a formal array
subtype, the actual subtype shall satisfy the following conditions:
- The formal array type and the actual
array type shall have the same dimensionality; the formal subtype and
the actual subtype shall be either both constrained or both unconstrained.
- For each index position, the index
types shall be the same, and the index subtypes (if unconstrained), or
the index ranges (if constrained), shall statically match (see 4.9.1).
- The component subtypes of the formal
and actual array types shall statically match.
- If the formal type has aliased components,
then so shall the actual.
Example of formal
-- given the generic package
type Item is private;
type Index is (<>);
type Vector is array (Index range <>) of Item;
type Table is array (Index) of Item;
package P is
-- and the types
type Mix is array (Color range <>) of Boolean;
type Option is array (Color) of Boolean;
-- then Mix can match Vector and Option can match Table
package R is new P(Item => Boolean, Index => Color,
Vector => Mix, Table => Option);
-- Note that Mix cannot match Table and Option cannot match Vector