# Adaptable Binary Function

Category: functors | Component type: concept

### Description

An Adaptable Binary Function is a Binary Function with nested `typedef`s that define its argument types and result type. [1] [2] These nested `typedef`s make it possible to use function object adaptors.

### Refinement of

Binary Function

### Associated types

First argument type | `F::first_argument_type` | The type of `F`'s first argument
Second argument type | `F::second_argument_type` | The type of `F`'s second argument
Result type | `F::result_type` | The type returned when the Binary Function is called

### Notation

`F` | A type that is a model of Binary Function

### Definitions

### Valid expressions

None, except for those defined by Binary Function

### Expression semantics

### Complexity guarantees

### Invariants

### Models

- `plus`
- `project1st`
- `pointer_to_binary_function`

### Notes

[1] Note the implication of this: a function pointer `T (*f)(X,Y)` is a Binary Function, but not an Adaptable Binary Function: the expressions `f::first_argument_type`, `f::second_argument_type`, and `f::result_type` are nonsensical.

[2] When you define a class that is a model of Adaptable Binary Function, you must provide these `typedef`s. The easiest way to do this is to derive the class from the base class `binary_function`. This is an empty class, with no member functions or member variables; the only reason it exists is to make defining Adaptable Binary Functions more convenient. `Binary_function` is very similar to the base classes used by the iterator tag functions.

### See also

Binary Function, Adaptable Generator, Adaptable Unary Function

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