wordpress 服务器迁移网站用户体验优化
任何定义了函数调用操作符的对象都是函数对象。C++ 支持创建、操作新的函数对象,同时也提供了许多内置的函数对象。
函数包装器
std::function 提供存储任意类型函数对象的支持。
|   function (C++11)  | 包装具有指定函数调用签名的任意类型的可调用对象 (类模板)  | 
|   bad_function_call (C++11)  | 调用空的 std::function 时抛出的异常 (类)  | 
|   mem_fn (C++11)  | 从成员指针创建出函数对象 (函数模板)  | 
函数调用
std::invoke 能以给定参数调用任何可调用 (Callable) 对象。
|   invoke (C++17)  | 以给定实参调用任意可调用 (Callable) 对象 (函数模板)  | 
恒等
std::identity 是恒等函数对象:它返回其不修改的参数。
|   identity (C++20)  | 返回其未修改的参数的函数对象 (类)  | 
部分函数应用
std::bind_front 与 std::bind 提供部分函数应用的支持,即绑定参数到函数以创建新函数。
|   bind_front (C++20)  | 按顺序绑定一定数量的参数到函数对象 (函数模板)  | 
|   bind (C++11)  | 绑定一或多个实参到函数对象 (函数模板)  | 
|   is_bind_expression (C++11)  | 指示对象为 std::bind 表达式,或能被用作这种表达式(类模板)  | 
|   is_placeholder (C++11)  | 表明一个对象是标准占位符,或者可以用作标准占位符 (类模板)  | 
|   定义于命名空间   | |
|   _1, _2, _3, _4, ... (C++11)  | 用作 std::bind 表达式中的未绑定实参的占位符(常量)  | 
取反器
std::not_fn 创建对传递给它的可调用对象的结果取反的函数对象。
|   not_fn (C++17)  | 创建返回其保有的函数对象的结果之补的函数对象 (函数模板)  | 
搜索器
提供实现数种字符串搜索算法的搜索器。它们能直接使用或用于 std::search 。
|   default_searcher (C++17)  | 标准 C++ 库搜索算法实现 (类模板)  | 
|   boyer_moore_searcher (C++17)  | Boyer-Moore 搜索算法实现 (类模板)  | 
|   boyer_moore_horspool_searcher (C++17)  | Boyer-Moore-Horspool 搜索算法实现 (类模板)  | 
引用包装器
引用包装器允许存储引用到可复制的函数对象中:
|   reference_wrapper (C++11)  | 可复制构造 (CopyConstructible) 且可复制赋值 (CopyAssignable) 的引用包装器 (类模板)  | 
|   refcref (C++11)(C++11)  | 创建具有从其实参推导的类型的 std::reference_wrapper (函数模板)  | 
|   unwrap_referenceunwrap_ref_decay (C++20)(C++20)  | 获取包装于 std::reference_wrapper 的引用类型 (类模板)  | 
运算符函数对象
C++ 针对常用的算术和逻辑运算定义了很多函数对象:
算术运算
|   plus  | 实现 x + y 的函数对象 (类模板)  | 
|   minus  | 实现 x - y 的函数对象 (类模板)  | 
|   multiplies  | 实现 x * y 的函数对象 (类模板)  | 
|   divides  | 实现 x / y 的函数对象 (类模板)  | 
|   modulus  | 实现 x % y 的函数对象 (类模板)  | 
|   negate  | 实现 -x 的函数对象 (类模板)  | 
比较
|   equal_to  | 实现 x == y 的函数对象 (类模板)  | 
|   not_equal_to  | 实现 x != y 的函数对象 (类模板)  | 
|   greater  | 实现 x > y 的函数对象 (类模板)  | 
|   less  | 实现 x < y 的函数对象 (类模板)  | 
|   greater_equal  | 实现 x >= y 的函数对象 (类模板)  | 
|   less_equal  | 实现 x <= y 的函数对象 (类模板)  | 
逻辑运算
|   logical_and  | 实现 x && y 的函数对象 (类模板)  | 
|   logical_or  | 实现 x || y 的函数对象 (类模板)  | 
|   logical_not  | 实现 !x 的函数对象 (类模板)  | 
位运算
|   bit_and  | 实现 x & y 的函数对象 (类模板)  | 
|   bit_or  | 实现 x | y 的函数对象 (类模板)  | 
|   bit_xor  | 实现 x ^ y 的函数对象 (类模板)  | 
|   bit_not (C++14)  | 实现 ~x 的函数对象 (类模板)  | 
有制约的比较函数对象 (C++20)
C++20 定义一组有制约的比较函数对象。相等运算符 (ranges::equal_to 与 ranges::not_equal_to) 要求参数类型实现 equality_comparable_with 。关系运算符( ranges::less 、 ranges::greater 、 ranges::less_equal 及 ranges::greater_equal )要求参数类型实现 totally_ordered_with 。
|   ranges::equal_to (C++20)  | 实现 x == y 的函数对象 (类)  | 
|   ranges::not_equal_to (C++20)  | 实现 x != y 的函数对象 (类)  | 
|   ranges::less (C++20)  | 实现 x < y 的函数对象 (类)  | 
|   ranges::greater (C++20)  | 实现 x > y 的函数对象 (类)  | 
|   ranges::less_equal (C++20)  | 实现 x <= y 的函数对象 (类)  | 
|   ranges::greater_equal (C++20)  | 实现 x >= y 的函数对象 (类)  | 
旧式绑定器与适配器
早期提供功能支持的几个工具在 C++11 中弃用,并于 C++17 中移除(旧否定器于 C++17 中弃用并于 C++20 中移除):
基类
|   unary_function (C++11 中弃用)(C++17 中移除)  | 与适配器兼容的一元函数基类 (类模板)  | 
|   binary_function (C++11 中弃用)(C++17 中移除)  | 与适配器兼容的二元函数基类 (类模板)  | 
绑定器
|   binder1stbinder2nd (C++11 中弃用)(C++17 中移除)  | 持有一个二元函数及其实参之一的函数对象 (类模板)  | 
|   bind1stbind2nd (C++11 中弃用)(C++17 中移除)  | 将一个实参绑定到二元函数 (函数模板)  | 
函数适配器
|   pointer_to_unary_function (C++11 中弃用)(C++17 中移除)  | 适配器兼容的包装,用于包装一元函数的指针 (类模板)  | 
|   pointer_to_binary_function (C++11 中弃用)(C++17 中移除)  | 适配器兼容的包装,用于包装二元函数的指针 (类模板)  | 
|   ptr_fun (C++11 中弃用)(C++17 中移除)  | 从函数指针创建与适配器兼容的函数对象包装器 (函数模板)  | 
|   mem_fun_tmem_fun1_tconst_mem_fun_tconst_mem_fun1_t (C++11 中弃用)(C++17 中移除)  | 指向零元或一元成员函数指针的包装器,可以一个对象指针调用 (类模板)  | 
|   mem_fun (C++11 中弃用)(C++17 中移除)  | 从成员函数指针创建包装器,可以一个对象指针调用 (函数模板)  | 
|   mem_fun_ref_tmem_fun1_ref_tconst_mem_fun_ref_tconst_mem_fun1_ref_t (C++11 中弃用)(C++17 中移除)  | 指向零元或一元成员函数指针的包装器,可以一个对象引用调用 (类模板)  | 
|   mem_fun_ref (C++11 中弃用)(C++17 中移除)  | 从成员函数指针创建包装器,能以一个对象引用调用 (函数模板)  | 
|   unary_negate (C++17 中弃用)(C++20 中移除)  | 包装器函数对象,返回所持有的一元谓词的补 (类模板)  | 
|   binary_negate (C++17 中弃用)(C++20 中移除)  | 包装器函数对象,返回所持有的二元谓词的补 (类模板)  | 
|   not1 (C++17 中弃用)(C++20 中移除)  | 构造定制的 std::unary_negate 对象 (函数模板)  | 
|   not2 (C++17 中弃用)(C++20 中移除)  | 构造定制的 std::binary_negate 对象 (函数模板)  | 
