# Binary Function

Category: functors | Component type: concept

### Description

A Binary Function is a kind of function object: an object that is called as if it were an ordinary C++ function. A Binary Function is called with two arguments.

### Refinement of

Assignable

### Associated types

First argument type | The type of the Binary Function's first argument.
Second argument type | The type of the Binary Function's second argument.
Result type | The type returned when the Binary Function is called

### Notation

`F` | A type that is a model of BinaryFunction
`X` | The first argument type of `F`
`Y` | The second argument type of `F`
`Result` | The result type of `F`
`f` | Object of type `F`
`x` | Object of type `X`
`y` | Object of type `Y`

### Definitions

The domain of a Binary Function is the set of all ordered pairs `(x, y)` that are permissible values for its arguments.

The range of a Binary Function is the set of all possible value that it may return.

### Valid expressions

Name | Expression | Type requirements | Return type
--- | --- | --- | ---
Function call | `f(x,y)` |  | `Result`

### Expression semantics

Name | Expression | Precondition | Semantics | Postcondition
--- | --- | --- | --- | ---
Function call | `f(x,y)` | The ordered pair `(x,y)` is in `f`'s domain | Calls `f` with `x` and `y` as arguments, and returns a value of type `Result` [1] | The return value is in `f`'s range

### Complexity guarantees

### Invariants

### Models

- `Result (*)(X,Y)`

### Notes

[1] Two different invocations of `f` may return different results, even if `f` is called with the same arguments both times. A Binary Function may refer to local state, perform I/O, and so on. The expression `f(x,y)` is permitted to change `f`'s state.

### See also

Function Object overview, Generator, Unary Function Adaptable Binary Function

Copyright © 1999 Silicon Graphics, Inc. All Rights Reserved. TrademarkInformation