An operation
operates on a
type T if it yields a value of type
T, if it has an
operand whose expected type (see
8.6) is
T,
or if it has an access parameter or access result type (see
6.1)
designating
T.
A predefined operator, or other
language-defined operation such as assignment or a membership test, that
operates on a type, is called a
predefined operation of the type.
The
primitive operations of a type are the
predefined operations of the type, plus any user-defined primitive subprograms.
For a derived type, the inherited (see
3.4)
user-defined subprograms;
For a specific type declared immediately within
a
package_specification,
any subprograms (in addition to the enumeration literals) that are explicitly
declared immediately within the same
package_specification
and that operate on the type;
For a nonformal type, any subprograms
not covered above that are explicitly declared immediately within the
same declarative region as the type and that override (see
8.3)
other implicitly declared primitive subprograms of the type.