std:: common_with
| 
           定义于头文件
            
            
             <concepts>
            
            | ||
| 
           
            
             template
            
            
             <
            
            
             class
            
            T,
            
             class
            
            U
            
             >
            
             
             concept common_with
             
              =
             
              | (C++20 起) | |
       概念
       
        common_with<T, U>
       
       规定两个类型
       
        T
       
       和
       
        U
       
       共享一个
       
        公共类型
       
       (通过
       
        
         std::common_type_t
        
       
       计算得出),两者均可转换为该类型。
      
| 目录 | 
语义要求
       T 和 U 满足
       
        std
        
         ::
        
        
         common_with
        
        
         <
        
        T, U
        
         >
        
       
       概念当且仅当:给定满足
       
        相等性保持
       
       的表达式
       
        t1
       
       、
       
        t2
       
       、
       
        u1
       
       和
       
        u2
       
       ,且
       
        
         decltype
         
          (
         
         
          (
         
         t1
         
          )
         
         
          )
         
        
       
       与
       
        
         decltype
         
          (
         
         
          (
         
         t2
         
          )
         
         
          )
         
        
       
       均为
       
        T
       
       类型,
       
        
         decltype
         
          (
         
         
          (
         
         u1
         
          )
         
         
          )
         
        
       
       与
       
        
         decltype
         
          (
         
         
          (
         
         u2
         
          )
         
         
          )
         
        
       
       均为
       
        U
       
       类型时,
      
- 
        
         
          
           
            std::
            
             common_type_t
            
           
          
          
           <
          
          T, U
          
           >
          
          
           (
          
          t1
          
           )
          
         
        
        等于
        
         
          
           
            std::
            
             common_type_t
            
           
          
          
           <
          
          T, U
          
           >
          
          
           (
          
          t2
          
           )
          
         
        
        当且仅当
        t1等于t2;且
- 
        
         
          
           
            std::
            
             common_type_t
            
           
          
          
           <
          
          T, U
          
           >
          
          
           (
          
          u1
          
           )
          
         
        
        等于
        
         
          
           
            std::
            
             common_type_t
            
           
          
          
           <
          
          T, U
          
           >
          
          
           (
          
          u2
          
           )
          
         
        
        当且仅当
        u1等于u2。
换句话说,转换为通用类型的操作必须 保持相等性 。
等值保持性
标准库概念的 requires 表达式 中声明的表达式必须满足 等值保持 要求(除非另有说明)。
参考文献
- C++23 标准 (ISO/IEC 14882:2024):
- 
         - 
           18.4.6 概念
           common_with[concept.common]
 
- 
           18.4.6 概念
           
- C++20 标准 (ISO/IEC 14882:2020):
- 
         - 
           18.4.6 概念
           common_with[concept.common]
 
- 
           18.4.6 概念
           
另请参阅
| 
           
            
             
              (C++11)
             
            
           
           | 确定一组类型的公共类型 (类模板) | 
| 确定一组类型的公共引用类型 (类模板) | |
| 
           
            
             
              (C++20)
             
            
           
           | 指定两种类型共享公共引用类型 (概念) |