Namespaces
Variants

std::copyable_function

来自 zh.cppreference.net
 
 
 
函数对象
函数调用
(C++17)(C++23)
恒等函数对象
(C++20)
透明运算符包装器
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

旧式绑定器与适配器
(直到 C++17*)
(直到 C++17*)
(直到 C++17*)
(直到 C++17*)  
(直到 C++17*)
(直到 C++17*)(直到 C++17*)(直到 C++17*)(直到 C++17*)
(直到 C++20*)
(直到 C++20*)
(直到 C++17*)(直到 C++17*)
(直到 C++17*)(直到 C++17*)

(直到 C++17*)
(直到 C++17*)(直到 C++17*)(直到 C++17*)(直到 C++17*)
(直到 C++20*)
(直到 C++20*)
 
 
定义于头文件 <functional>
template< class... >
class copyable_function; // not defined
(1) (C++26 起)
template< class R, class... Args >
class copyable_function<R(Args...)>;
template< class R, class... Args >
class copyable_function<R(Args...) noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) &>;
template< class R, class... Args >
class copyable_function<R(Args...) & noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) &&>;
template< class R, class... Args >
class copyable_function<R(Args...) && noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) const>;
template< class R, class... Args >
class copyable_function<R(Args...) const noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) const &>;
template< class R, class... Args >
class copyable_function<R(Args...) const & noexcept>;
template< class R, class... Args >
class copyable_function<R(Args...) const &&>;
template< class R, class... Args >
class copyable_function<R(Args...) const && noexcept>;
(2) (C++26 起)

类模板 std::copyable_function 是通用的多态函数包装器。std::copyable_function 对象可以存储并调用任何 可复制构造 可调用 目标 —— 函数、lambda 表达式、bind 表达式或其他函数对象,以及指向成员函数的指针和指向成员对象的指针。

存储的可调用对象称为 目标,std::copyable_function 不含目标时称为 std::copyable_function空。不同于 std::function,调用一个 空 的 std::copyable_function 会导致未定义行为。

std::copyable_function 支持模板参数中提供的所有可能的 cv 限定符(不包括 volatile)、引用限定符和 noexcept 说明符 组合。这些限定符和说明符(如果有)会添加到其 operator() 中。

std::copyable_function 满足 可复制构造 和 可复制赋值 的要求。

成员类型

类型 定义
result_type R

成员函数

构造新的 std::copyable_function 对象
(公开成员函数)
销毁 std::copyable_function 对象
(公开成员函数)
替换或销毁目标
(公开成员函数)
交换两个 std::copyable_function 对象的目标
(公开成员函数)
检查 std::copyable_function 是否拥有目标
(公开成员函数)
调用目标
(公开成员函数)

非成员函数

重载 std::swap 算法
(函数)
(C++26)
比较 std::copyable_function 与 nullptr
(函数)

注释

实现可以在 std::copyable_function 对象内部存储一个小尺寸的可调用对象。这种小对象优化对于函数指针和 std::reference_wrapper 特化实际上是必需的,并且仅适用于 std:: is_nothrow_move_constructible_v < T > 为 true 的类型 T 。

功能测试 宏 值 标准 功能
__cpp_lib_copyable_function 202306L (C++26) std::copyable_function

示例

参见

(C++11)
任何可复制构造的可调用对象的可复制包装器
(类模板)
支持给定调用签名中限定符的任何可调用对象的仅移动包装器
(类模板)
任何可调用对象的非拥有包装器
(类模板)