[/
Copyright 2021-2023 Glen Joseph Fernandes
(glenjofe@gmail.com)

Distributed under the Boost Software License, Version 1.0.
(http://www.boost.org/LICENSE_1_0.txt)
]

[section:identity identity]

[simplesect Authors]

* Glen Fernandes

[endsimplesect]

[section Overview]

The header <boost/functional/identity.hpp> provides the function object
`boost::identity` whose `operator()` returns its argument. It is an
implementation of C++20's `std::identity` that supports C++03 and above.

[endsect]

[section Example]

It is commonly used as the default projection in constrained algorithms.

```
template<class Range, class Projection = boost::identity>
void print(Range&& range, Projection projection = {});
```

[endsect]

[section Reference]

```
namespace boost {

struct identity {
    using is_transparent = unspecified;

    template<class T>
    T&& operator()(T&& value) const noexcept;
};

} /* boost */
```

[section Operators]

[variablelist
[[`template<class T> T&& operator()(T&& value) const noexcept;`]
[Returns `std::forward<T>(value)`.]]]

[endsect]

[endsect]

[endsect]