[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)