# identity<T>

Category: functors | Component type: type

### Description

`Identity` is a Unary Function that represents the identity function: it takes a single argument `x`, and returns `x`.

### Example

    int main()
    {
      int x = 137;
      identity<int> id;
      assert(x == id(x));
    }

### Definition

Defined in the standard header functional, and in the nonstandard backward-compatibility header function.h. This class is an SGI extension; it is not part of the C++ standard.

### Template parameters

Parameter | Description | Default
--- | --- | ---
`T` | The function object's argument type, and return type. [1] |

### Model of

Adaptable Unary Function

### Type requirements

None.

### Public base classes

`unary_function<T, T>`

### Members

Member | Where defined | Description
--- | --- | ---
`argument_type` | Adaptable Unary Function | The type of `identity`'s argument: `T`.
`result_type` | Adaptable Unary Function | The type of the result: `T`. [1]
`const T& operator()(const T&) const` | Adaptable Unary Function | Function call. The return value is simply the argument.

### New members

All of `identity`'s members are defined in the Adaptable Unary Function requirements. `Identity` does not introduce any new members.

### Notes

[1] It is essential that the return type and the argument type are the same: generalizing `identity` to allow them to differ would not work. The reason is that `identity` returns a const reference to its argument, rather than a copy of its argument. If `identity` were allowed to perform a conversion, then this would be a dangling reference.

### See also

The function object overview, `select1st`, `select2nd`, `project1st`, `project2nd`

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