12 Generic Units
A
generic unit is a program
unit that is either a generic subprogram or a generic package.
A
generic unit is a
template[, which can be parameterized, and from
which corresponding (nongeneric) subprograms or packages can be obtained].
The resulting program units are said to be
instances of the original
generic unit.
Term entry: generic unit —
template for a (nongeneric) program unit
Note 1: The template can be parameterized by objects, types, subprograms,
and packages.
Note 2: Generic units can be used to perform the role that macros sometimes
play in other languages.
Term entry: generic instance —
nongeneric unit created by the instantiation of a generic unit
[A generic unit is declared by a
generic_declaration.
This form of declaration has a
generic_formal_part
declaring any generic formal parameters. An instance of a generic unit
is obtained as the result of a
generic_instantiation
with appropriate generic actual parameters for the generic formal parameters.
An instance of a generic subprogram is a subprogram. An instance of a
generic package is a package.
Generic units are templates. As templates they do
not have the properties that are specific to their nongeneric counterparts.
For example, a generic subprogram can be instantiated but it cannot be
called. In contrast, an instance of a generic subprogram is a (nongeneric)
subprogram; hence, this instance can be called but it cannot be used
to produce further instances.]
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe