Описание функции, обозначение которой является знаком операции, используется для совмещения операций. Последовательность символов в знаке операции должна быть обозначением операции: логической, отношения, бинарной аддитивной, унарной аддитивной, мультипликативной или высшего приоритета (см. 4.5). В качестве обозначения функции не допускаются никакие проверки вхождения, ни формы управления с промежуточной проверкой.
Спецификация подпрограммы унарной операции должна иметь один-единственный параметр. Спецификация подпрограммы бинарной операции должна иметь два параметра; при каждом использовании этой операции левый операнд берется в качестве первого фактического параметра, правый операнд — в качестве второго параметра; конкретизация настройки функции, которая обозначена знаком операции, допускается, только если спецификация настраиваемой функции имеет соответствующее число параметров. Выражения по умолчанию для параметров операции недопустимы (описана ли операция явно спецификацией подпрограммы или конкретизацией настройки).
Операции + и - допускают как унарную, так и бинарную совмещенную операцию.
Явное описание функции, которая совмещает операцию =, отличное от описания переименования, допустимо, только если оба параметра являются параметрами одного и того же лимитируемого типа. Совмещение равенства должно давать результат предопределенного типа BOOLEAN; операция неравенства /=, дающая результат, дополнительный к результату операции равенства, совмещается неявно при задании операции равенства. Явное совмещение операции неравенства недопустимо.
Описание переименования, обозначение которого — операция равенства, допустимо только для переименования другой операции равенства. (Например, такое описание переименования может быть использовано, когда равенство видимо по имени, но не непосредственно.)
Примечание. Совмещение операций отношения не нарушает соотношений, таких как проверка вхождения в диапазон или выборы в операторе выбора.
Примеры:
function "+" (LEFT, RIGHT : MATRIX) return MATRIX; function "+" (LEFT, RIGHT : VECTOR) return VECTOR;-- в предположении, что А, В и С типа VECTOR -- три следующих присваивания эквивалентныА := B + С;А := "+"(В, С); А := "+"(LEFT => В, RIGHT => С);
Ссылки: бинарная аддитивная операция 4.5, 4.5.3, видимый по именованию 8.3, выражение по умолчанию для формального параметра 6.1, дополнительный результат 4.5.2, допустимо 1.6, знак операции 6.1, лимитируемый тип 7.4.4, логическая операция 4.5, 4.5.1, логический предопределенный тип 3.5.3, мультипликативная операция 4.5, 4.5.5, непосредственно видимо 8.3, неявное описание 3.1, обозначение 6.1, операция 4.5, операция высшего приоритета 4.5, 4.5.6, операция неравенства 4.5.2, операция отношения 4.5, 4.5.2, операция равенства 4.5, описание 3.1, описание функции 6.1, определение типа 3.3.1, проверка вхождения 4.5, 4.5.2, символ 2.1, совмещение 6.6, 8.7, унарная аддитивная операция 4.5, 4.5.4, фактический параметр 6.4.1, форма управления с промежуточной проверкой 4.5, 4.5.1, формальный параметр 6.1.