6.6 Overloading of Operators
Name Resolution Rules
Each use of a unary or binary operator is equivalent
to a function_call
being the corresponding operator_symbol
and with (respectively) one or two positional actual parameters being
the operand(s) of the operator (in order).
of a unary or binary operator shall have one or two parameters, respectively.
The parameters shall be of mode in
. A generic function instantiation
is an operator_symbol
is only allowed if the specification of the generic function has the
corresponding number of parameters, and they are all of mode in
An explicit declaration of "/=" shall not
have a result type of the predefined type Boolean.
An explicit declaration of "=" whose result
type is Boolean implicitly declares an operator "/=" that gives
the complementary result.
NOTE The operators "+"
and "–" are both unary and binary operators, and hence
can be overloaded with both one- and two-parameter functions.
Examples of user-defined
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);
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe