[func.def]

# 22 General utilities library [[utilities]](./#utilities)

## 22.10 Function objects [[function.objects]](function.objects#func.def)

### 22.10.3 Definitions [func.def]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L11465)

The following definitions apply to this Clause:

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L11468)

A [*call signature*](#def:call_signature "22.10.3 Definitions [func.def]") is the name of a return type followed by a
parenthesized comma-separated list of zero or more argument types[.](#2.sentence-1)

[3](#3)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L11472)

A [*callable type*](#def:type,callable "22.10.3 Definitions [func.def]") is a function object type ([[function.objects]](function.objects "22.10 Function objects")) or a pointer to member[.](#3.sentence-1)

[4](#4)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L11475)

A [*callable object*](#def:object,callable "22.10.3 Definitions [func.def]") is an object of a callable type[.](#4.sentence-1)

[5](#5)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L11478)

A [*call wrapper type*](#def:call_wrapper,type "22.10.3 Definitions [func.def]") is a type that holds a callable object
and supports a call operation that forwards to that object[.](#5.sentence-1)

[6](#6)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L11482)

A [*call wrapper*](#def:call_wrapper "22.10.3 Definitions [func.def]") is an object of a call wrapper type[.](#6.sentence-1)

[7](#7)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L11485)

A [*target object*](#def:target_object "22.10.3 Definitions [func.def]") is the callable object held by a call wrapper[.](#7.sentence-1)

[8](#8)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L11488)

A call wrapper type may additionally hold
a sequence of objects and references
that may be passed as arguments to the target object[.](#8.sentence-1)

These entities are collectively referred to
as [*bound argument entities*](#def:bound_argument_entity "22.10.3 Definitions [func.def]")[.](#8.sentence-2)

[9](#9)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L11495)

The target object and bound argument entities of the call wrapper are
collectively referred to as [*state entities*](#def:state_entity "22.10.3 Definitions [func.def]")[.](#9.sentence-1)
