
函数包装器
文章平均质量分 80
类模板 std::function 是通用多态函数封装器。 std::function 的实例能存储、复制及调用任何可调用 (Callable) 目标——函数、 lambda 表达式、 bind 表达式或其他函数对象,还有指向成员函数指针和指向数据成员指针。
繁星璀璨G
单身,求对象
展开
-
C++函数对象-函数包装器-从成员指针创建出函数对象(std::mem_fn)
函数模板 std::mem_fn 生成指向成员指针的包装对象,它可以存储、复制及调用指向成员指针。到对象的引用和指针(含智能指针)可在调用 std::mem_fn 时使用。原创 2024-01-21 08:30:00 · 471 阅读 · 0 评论 -
C++函数对象-函数包装器-调用空的 std::function 时抛出的异常(std::bad_function_call)
std::bad_function_call 是若函数包装器无目标,则 std::function::operator() 将抛出的异常类型。原创 2024-01-20 18:10:50 · 1582 阅读 · 0 评论 -
C++函数对象-函数包装器-(std::function)(五)(获得 std::function 所存储的目标的typeid)(获得指向 std::function 所存储的目标的指针)
返回存储的函数的类型。 返回指向存储的可调用函数目标的指针。 与空指针比较 std::function 。空 function (即无可调用目标的 function )比较相等,非空 function 比较不相等。原创 2024-01-19 08:30:00 · 1038 阅读 · 0 评论 -
C++函数对象-函数包装器-(std::function)(四)- 检查是否包含了有效的目标 - 调用其目标
检查 *this 是否存储可调用函数对象,即非空。 以参数 args 调用存储的可调用函数目标。 等效于进行 INVOKE(f, std::forward(args)...) ,其中 f 是 *this 的目标对象,且 INVOKE 是描述于可调用 (Callable) 的操作。原创 2024-01-18 08:30:00 · 786 阅读 · 0 评论 -
C++函数对象-函数包装器-(std::function)(三)交换内容(std::function<R(Args...)>::swap)
交换 *this 与 other 存储的可调用对象。 为 std::function 特化 std::swap 算法。交换 lhs 与 rhs 的状态。等效地调用 lhs.swap(rhs) 。原创 2024-01-17 08:30:00 · 468 阅读 · 0 评论 -
C++函数对象-函数包装器-(std::function)(二)- 为内容赋值(std::function<R(Args...)>::operator=)
赋值新目标给 std::function 。 1) 赋值 other 的目标副本,如同以执行 function(other).swap(*this); 2) 移动 other 的目标到 *this 。 other 在有未指定值的合法状态。 3) 舍弃当前目标。 *this 在调用后为空。 4) 设置 *this 的目标为可调用的 f ,如同以执行 function(std::forward(f)).swap(*this); 。此运算符不参与重载决议,除非 f 对于参数类型 Args... 和返原创 2024-01-16 08:30:00 · 995 阅读 · 0 评论 -
C++函数对象-函数包装器-(std::function)(一)- 构造新的 std::function 实例 - 析构 std::function 实例
从各种资源构造 std::function 。 1-2) 构造空 function 。 3-4) 复制 (3) 或移动 (4) other 的目标到 *this 的目标。若 other 为空,则调用后 *this 将亦为空。对于 (4) , other 在调用后处于合法但未指定的状态。 5) 以 std::move(f) 初始化目标。若 f 是空指针或指向成员的空指针,则 *this 在此调用后将为空。此构造函数不参与重载决议,除非 f 对于参数类型 Args... 和返回类型 R 可调用 (Call原创 2024-01-15 08:30:00 · 1509 阅读 · 0 评论