Contents Index Search Previous Next
12.4 Formal Objects
formal object can be used to pass a value or variable to a generic unit.
: mode subtype_mark
Name Resolution Rules
The expected type for the
, if any, of a
formal object is the type of the formal object.
For a generic formal object
of mode in
, the expected type for the actual is the type of the
For a generic formal object of mode in out,
the type of the actual shall resolve to the type of the formal.
If a generic formal object has a default_expression,
then the mode shall be in (either explicitly or by default); otherwise,
its mode shall be either in or in out.
For a generic formal object of mode in
the actual shall be an expression
For a generic formal object of mode in out
, the actual shall be
that denotes a variable for
which renaming is allowed (see 8.5.1
The type of a generic formal object of mode in
shall be nonlimited.
declares a generic formal object. The default mode is in
a formal object of mode in
, the nominal subtype is the one denoted
by the subtype_mark
in the declaration
of the formal.
For a formal object of mode in
, its type is determined by the subtype_mark
in the declaration; its nominal subtype is nonstatic, even if the subtype_mark
denotes a static subtype.
In an instance, a formal_object_declaration
of mode in
declares a new stand-alone constant object whose initialization
expression is the actual, whereas a formal_object_declaration
of mode in out
declares a view whose properties are identical
to those of the actual.
evaluation of a generic_association
for a formal object of mode in
, a constant object is created,
the value of the actual parameter is converted to the nominal subtype
of the formal object, and assigned to the object, including any value
adjustment -- see 7.6
6 The constraints that
apply to a generic formal object of mode in out are those of the
corresponding generic actual parameter (not those implied by the subtype_mark
that appears in the formal_object_declaration).
Therefore, to avoid confusion, it is recommended that the name of a first
subtype be used for the declaration of such a formal object.
Contents Index Search Previous Next Legal