Contents Index Previous Next
12.5.2 Formal Scalar Types
1
A formal scalar type is one defined by
any of the formal_type_definitions
in this subclause. [The class determined for a formal scalar type is
discrete, signed integer, modular, floating point, ordinary fixed point,
or decimal.]
Syntax
2
formal_discrete_type_definition
::= (<>)
3
formal_signed_integer_type_definition
::= range <>
4
formal_modular_type_definition
::= mod <>
5
formal_floating_point_definition
::= digits <>
6
formal_ordinary_fixed_point_definition
::= delta <>
7
formal_decimal_fixed_point_definition
::= delta <>
digits <>
Legality Rules
8
The actual type for a formal scalar type shall
not be a nonstandard numeric type.
8.a
Reason: This restriction
is necessary because nonstandard numeric types have some number of restrictions
on their use, which could cause contract model problems in a generic
body. Note that nonstandard numeric types can be passed to formal derived
and formal private subtypes, assuming they obey all the other rules,
and assuming the implementation allows it (being nonstandard means the
implementation might disallow anything).
9
12 The actual type shall be in the
class of types implied by the syntactic category of the formal type definition
(see 12.5, ``Formal Types'').
For example, the actual for a formal_modular_type_definition
shall be a modular type.
Contents Index Previous Next Legal