12.5.3 Formal Array Types
The class determined for a formal array type is the class of all array types.
formal_array_type_definition ::= array_type_definition
The only form of discrete_subtype_definition that is allowed within the declaration of a generic formal (constrained) array subtype is a subtype_mark.
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 array types:
-- given the generic package
generic 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 ... end P;
-- 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
Copyright © 1992,1993,1994,1995 Intermetrics, Inc.
Copyright © 2000 The MITRE Corporation, Inc. Ada Reference Manual