std:: piecewise_construct, std:: piecewise_construct_t
      From cppreference.net
     
     
     
        
         C++
        
        
         
          
           
          
          
         
        
       
       
        
         Utilities library
        
        
         
          
           
            
          
          
          
         
        
       
       | 
 | 
 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
        
         
          std::pair
         
        
        
         
          
           
            
          
          
          
         
        
       
       | Member functions | ||||
| 
                
                 
                  
                   (C++11)
                  
                 
                
                | ||||
| Non-member functions | ||||
| 
                
                 
                 
                 
                  
                   (until C++20)
                  
                 
                 
                  
                   (until C++20)
                  
                 
                 
                  
                   (until C++20)
                  
                 
                 
                  
                   (until C++20)
                  
                 
                 
                  
                   (until C++20)
                  
                 
                 
                  
                   (C++20)
                  
                 
                
                | ||||
| 
                
                 
                  
                   (C++11)
                  
                 
                
                | ||||
| 
                
                 
                  
                   (C++11)
                  
                 
                
                | ||||
| Helper classes | ||||
| 
                
                 
                  
                   (C++11)
                  
                 
                
                | ||||
| 
                
                 
                  
                   (C++11)
                  
                 
                
                | ||||
| 
                
                 
                  
                   (C++23)
                  
                 
                
                | ||||
| 
                
                 
                  
                   (C++23)
                  
                 
                
                | ||||
| 
                
                 
                  
                   piecewise_construct_t
                  
                 
                
                
                
                 
                  
                   (C++11)
                  
                 
                
                | ||||
| Deduction guides (C++17) | 
| 
           定义于头文件
            
            
             <utility>
            
            | ||
| 
           
            
             struct
            
            piecewise_construct_t
            
             {
            
            
             explicit
            
            piecewise_construct_t
            
             (
            
            
             )
            
            
             =
            
            
             default
            
            
             ;
            
            
             }
            
            
             ;
            
           
           | (1) | (C++11 起) | 
| 
           
            
             constexpr
            
            
             
              std::
              
               piecewise_construct_t
              
             
            
            piecewise_construct
            
             {
            
            
             }
            
            
             ;
            
           
           | (2) | (C++11 起) (C++17 起为内联) | 
       
        1)
       
       
      
        std::piecewise_construct_t
       
       是一个空类标签类型,用于区分接收两个元组参数的不同函数。
      
       
        2)
       
       常量
       
      
        std::piecewise_construct
       
       是
       
        (1)
       
       的一个实例。
      
       不使用
       
        std::piecewise_construct_t
       
       的重载版本假定每个元组参数将成为 pair 的元素。使用
       
        std::piecewise_construct_t
       
       的重载版本假定每个元组参数将被分段用于构造指定类型的新对象,该对象将成为 pair 的元素。
      
| 目录 | 
标准库
以下标准库类型和函数将其用作消歧标签:
| 实现二元组,即包含两个值的组合 (类模板) | |
| td>  准备与给定类型所需的使用分配器构造方式相匹配的参数列表
           
            
             
              (C++20)
             
            
           
           | |
| 通过重复生成相同值构成的 
           view
          (类模板) (定制点对象) | 
示例
         运行此代码
        
       #include <iostream> #include <tuple> #include <utility> struct Foo { Foo(std::tuple<int, float>) { std::cout << "Constructed a Foo from a tuple\n"; } Foo(int, float) { std::cout << "Constructed a Foo from an int and a float\n"; } }; int main() { std::tuple<int, float> t(1, 3.14); std::cout << "Creating p1...\n"; std::pair<Foo, Foo> p1(t, t); std::cout << "Creating p2...\n"; std::pair<Foo, Foo> p2(std::piecewise_construct, t, t); }
输出:
Creating p1... Constructed a Foo from a tuple Constructed a Foo from a tuple Creating p2... Constructed a Foo from an int and a float Constructed a Foo from an int and a float
缺陷报告
下列行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。
| 缺陷报告 | 应用于 | 发布时的行为 | 正确行为 | 
|---|---|---|---|
| LWG 2510 | C++11 | 默认构造函数为非显式,可能导致歧义 | 改为显式 | 
参见
| 构造新的 pair 对象 ( 
           std::pair<T1,T2>
          的公开成员函数) |