std:: copyable_function
| 
           定义于头文件
            
            
             <functional>
            
            | ||
| 
           
            
             template
            
            
             <
            
            
             class
            
            ...
            
             >
            
             class copyable_function ; // 未定义 | (1) | (C++26 起) | 
| 
           
            
             template
            
            
             <
            
            
             class
            
            R,
            
             class
            
            ...
            
             Args
            
            
             >
            
             
             
              class
             
             copyable_function
             
              <
             
             R
             
              (
             
             Args...
             
              )
             
             
              >
             
             
              ;
             
              | (2) | (C++26 起) | 
       类模板
       
        std::copyable_function
       
       是一种通用多态函数包装器。
       
        std::copyable_function
       
       对象能够存储并调用任何
       
        
         可复制构造
        
       
       的
       
        
         可调用
        
       
       
        目标
       
       ——包括函数、
       
        lambda表达式
       
       、
       
        绑定表达式
       
       或其他函数对象,以及指向成员函数的指针和指向成员对象的指针。
      
       存储的可调用对象称为
       
        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
         是否拥有目标(公开成员函数) | |
| 调用目标 (公开成员函数) | 
非成员函数
| 
           
            
             
              (C++26)
             
            
           
           | 重载
         
          
           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)
             
            
           
           | 任何可复制构造的可调用对象的可复制包装器 (类模板) | 
| 
           
            
             
              (C++23)
             
            
           
           | 支持给定调用签名中限定符的任何可调用对象的仅移动包装器 (类模板) | 
| 
           
            
             
              (C++26)
             
            
           
           | 任何可调用对象的非拥有包装器 (类模板) |