- (1)
- An operator is a function whose designator is an operator_symbol.
Operators, like other functions, may be overloaded.
Name Resolution Rules
- (2)
- Each use of a unary or binary operator is equivalent to a function_call
with function_prefix being the corresponding operator_symbol, and with
(respectively) one or two positional actual parameters being the operand(s)
of the operator (in order).
Legality Rules
- (3)
- The subprogram_specification of a unary or binary operator shall have one
or two parameters, respectively. A generic function instantiation whose
designator is an operator_symbol is only allowed if the specification of the
generic function has the corresponding number of parameters.
- (4)
- Default_expressions are not allowed for the parameters of an operator
(whether the operator is declared with an explicit subprogram_specification
or by a generic_instantiation).
- (5)
- An explicit declaration of "/=" shall not have a result type of the
predefined type Boolean.
Static Semantics
- (6)
- A declaration of "=" whose result type is Boolean implicitly declares a
declaration of "/=" that gives the complementary result.
-
- (7)
(8) The operators "+" and "-" are both unary and binary operators, and
hence may be overloaded with both one- and two-parameter functions.
Examples
- (8)
- Examples of user-defined operators:
(9)
function "+" (Left, Right : Matrix) return Matrix;
function "+" (Left, Right : Vector) return Vector;
-- assuming that A, B, and C are of the type Vector
-- the following two statements are equivalent:
A := B + C;
A := "+"(B, C);
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12