std::experimental::simd_abi:: deduce
| 
           Defined in header
            
            
             <experimental/simd>
            
            | ||
| 
           
            
             template
            
            
             <
            
            
             class
            
            T,
            
             
              std::
              
               size_t
              
             
            
            N,
            
             class
            
            ...
            
             Abis
            
            
             >
            
             struct deduce ; | (parallelism TS v2) | |
The type deduce < T, N, Abis... > :: type is present if and only if:
- T is a vectorizable type,
- simd_abi :: fixed_size < N > is supported, and
- every type in Abis... is an ABI tag.
       Let
       
        DA
       
       denote
       
        
         deduce
         
          <
         
         T, N, Abis...
         
          >
         
         
          ::
         
         
          type
         
        
       
       when it presents, then
      
- simd_size_v < T, DA > == N ,
- simd < T, DA > is default constructible, i.e. it is supported,
- 
        DAissimd_abi::scalarif N == 1 , otherwise it is implementation-defined.
Member types
| Name | Definition | 
| 
          type
          | an ABI tag type suitable for specified element type 
          T
         and size
          N
          | 
Helper types
| 
           
            
             template
            
            
             <
            
            
             class
            
            T,
            
             
              std::
              
               size_t
              
             
            
            N,
            
             class
            
            ...
            
             Abis
            
            
             >
            
             using deduce_t = typename deduce < T, N, Abis... > :: type ; | (parallelism TS v2) | |
Notes
       
        simd_abi::deduce
       
       is SFINAE-friendly.
      
       The ABI tag deduced via this facility is a Quality-of-Implementation feature. 
Implementations can base the choice on
       
        
         Abis...
        
       
       , but can also ignore the
       
        
         Abis...
        
       
       arguments. A simple implementation might simply return
       
        
         fixed_size
         
          <
         
         N
         
          >
         
        
       
       unconditionally. An optimized implementation might return an implementation-defined extended ABI tag for most inputs. Consequently, if you need an ABI tag for a certain number of elements, use
       
        
         fixed_size
        
       
       if ABI stability is of concern, and prefer
       
        deduce_t
       
       otherwise.
      
Example
| This section is incomplete Reason: no example | 
See also
| 
           
            
             
              (parallelism TS v2)
             
            
           
           | tag type for storing a single element (typedef) | 
| 
           
            
             
              (parallelism TS v2)
             
            
           
           | tag type for storing specified number of elements (alias template) | 
| 
           
            
             
              (parallelism TS v2)
             
            
           
           | tag type that ensures ABI compatibility (alias template) | 
| 
           
            
             
              (parallelism TS v2)
             
            
           
           | tag type that is most efficient (alias template) |