Go to the first, previous, next, last section, table of contents.


3.2.3 Classification of Operations

Static Semantics

  1. An operation operates on a type T if it yields a value of type T, if it has an operand whose expected type, See section 8.6 The Context of Overload Resolution, is T, or if it has an access parameter, See section 6.1 Subprogram Declarations 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.
  2. The primitive subprograms of a specific type are defined as follows:
    1. The predefined operators of the type, See section 4.5 Operators and Expression Evaluation,
    2. For a derived type, the inherited, See section 3.4 Derived Types and Classes, user-defined subprograms;
    3. For an enumeration type, the enumeration literals (which are considered parameterless functions -- See section 3.5.1 Enumeration Types.);
    4. 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;
    5. Any subprograms not covered above that are explicitly declared immediately within the same declarative region as the type and that override, See section 8.3 Visibility, other implicitly declared primitive subprograms of the type.

  1. A primitive subprogram whose designator is an operator_symbol is called a primitive operator.


Go to the first, previous, next, last section, table of contents.