Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

function

类模板  <functional>

template <class T> function;     // undefined
template <class Ret, class... Args> class function<Ret(Args...)>;

函数包装器
可以将任何类型的可调用元素(如函数和函数对象)包装为可复制对象的类, 其类型仅取决于其调用签名(而不取决于可调用元素类型本身)。

function类实例化的对象可以包装以下任何类型的可调用对象:函数、函数指针、指向成员的指针或任何类型的函数对象 (即类定义operator()的对象,包括closures)。

函数的target是一个对象,内部有封装的可调用对象的decay副本. 目标可调用对象的具体类型不在于function实例化包装器类;而只取决于它的调用签名。

function对象可以被复制和移动,并且可以用指定的调用签名直接调用可调用对象(请参阅成员operator())。

function对象也可以处于没有目标可调用对象的状态。在这种情况下,它们被称为空函数, 调用它们会抛出bad_function_call异常。

☲  模板参数


T
一个类型。
泛型模板没有定义。只有一个专门的T作为函数类型Ret(Args…)。

Ret
引用函数调用所产生的类型。

args...
参数的类型。
这是一个具有任意数量类型的模板参数包。
对于指向成员的指针,第一个类型应该是对成员所指向的类类型的引用。

☲  成员类型


成员类型 定义
result_type Ret
argument_type 如果Args……是单一类型,则它是该单一类型的别名。
否则,没有定义。
first_argument_type 如果Args……是恰好由两种类型组成的包,它是第一种类型的别名。
否则,没有定义。
second_argument_type 如果Args……是恰好由两种类型组成的包,它是第二种类型的别名。
否则,没有定义。

☲  成员函数



(constructor) 构造函数包装器(公共成员函数)
(destructor) 析构函数包装器(公共成员函数)
operator= 赋值函数对象(公共成员函数)
assign 赋值目标并分配空间(公共成员函数)
operator bool 检查是否可调用(公共成员函数)
target_type 目标内部类型(公共成员函数)
operator() 调用目标对象(公共成员函数)
target 获取指向目标的指针(公共成员函数)
swap 交换目标(公共成员函数)

☲  非成员函数重载



relational operators 函数与空指针的关系操作(函数模板)
swap 交换目标(公共成员函数)
联系我们 免责声明 关于CandCplus 网站地图