std:: extent
| 
           
           Défini dans l'en-tête
            
         
            
             <type_traits>
            
           
           | 
         ||
| 
           
           
            
             template
            
            
             <
            
            
             class
            
            T,
            
             unsigned
            
            N
            
             =
            
            
             0
            
            
             >
            
             
         struct extent ;  | 
         (depuis C++11) | |
       Si
       
        T
       
       est un type tableau, fournit la constante membre
       
        value
       
       égale au nombre d'éléments le long de la
       
        
         N
        
        
         ième
        
       
       dimension du tableau, si
       
        N
       
       est dans l'intervalle
       
        
         [
        
        
         
          
          
           0
          
          
         
        
        
         ,
        
        
         
          
           
            std::
            
             rank
            
           
          
          
           <
          
          T
          
           >
          
          
           ::
          
          
           value
          
         
        
        
         )
        
       
       . Pour tout autre type, ou si
       
        T
       
       est un tableau de taille inconnue le long de sa première dimension et
       
        N
       
       vaut
       
        
         
         
          0
         
         
        
       
       ,
       
        value
       
       vaut
       
        
         
         
          0
         
         
        
       
       .
      
       Si le programme ajoute des spécialisations pour
       
        std::extent
       
       
        
         ou
         
          std::extent_v
         
        
        
         
          (depuis C++17)
         
        
       
       , le comportement est indéfini.
      
         Table des matières | 
       
Modèle de variable d'assistance
| 
           
           
            
             template
            
            
             <
            
            
             class
            
            T,
            
             unsigned
            
            N
            
             =
            
            
             0
            
            
             >
            
             
         constexpr std:: size_t extent_v = extent < T, N > :: value ;  | 
         (depuis C++17) | |
Hérité de std:: integral_constant
Constantes membres
| 
           
            
             
              value
             
            
            
           
            
             
              
               [static]
              
             
            
            
           | 
         
          le nombre d'éléments le long de la
          
           N
          
          -ième dimension de
          
           T
          
          (constante membre publique statique)  | 
        
Fonctions membres
| 
           
            
             
              operator std::size_t
             
            
            
           | 
         
          convertit l'objet en
          
           
            
             std::
             
              size_t
             
            
           
          
          , retourne
          
           
            value
           
          
           (fonction membre publique)  | 
        
| 
           
            
             
              operator()
             
            
            
           
            
             
              
               (C++14)
              
             
            
            
           | 
         
          retourne
          
           
            value
           
          
           (fonction membre publique)  | 
        
Types membres
| Type | Définition | 
          
           value_type
          
          | 
         std:: size_t | 
          
           type
          
          | 
         std:: integral_constant < std:: size_t , value > | 
Implémentation possible
         template<class T, unsigned N = 0> struct extent : std::integral_constant<std::size_t, 0> {}; template<class T> struct extent<T[], 0> : std::integral_constant<std::size_t, 0> {}; template<class T, unsigned N> struct extent<T[], N> : std::extent<T, N - 1> {}; template<class T, std::size_t I> struct extent<T[I], 0> : std::integral_constant<std::size_t, I> {}; template<class T, std::size_t I, unsigned N> struct extent<T[I], N> : std::extent<T, N - 1> {};  | 
       
Exemple
#include <type_traits> static_assert( std::extent_v<int[3]> == 3 && // la dimension par défaut est 0 std::extent_v<int[3], 0> == 3 && // identique à ci-dessus std::extent_v<int[3][4], 0> == 3 && std::extent_v<int[3][4], 1> == 4 && std::extent_v<int[3][4], 2> == 0 && std::extent_v<int[]> == 0 ); int main() { const auto ext = std::extent<int['*']>{}; static_assert(ext == 42); // avec conversion implicite en std::size_t const int ints[]{1, 2, 3, 4}; static_assert(std::extent_v<decltype(ints)> == 4); // taille du tableau [[maybe_unused]] int ary[][3] = {{1, 2, 3}}; // ary[0] est de type référence vers 'int[3]', donc l'extent // ne peut pas être calculé correctement et retourne 0 static_assert(std::is_same_v<decltype(ary[0]), int(&)[3]>); static_assert(std::extent_v<decltype(ary[0])> == 0); // supprimer la référence donne la valeur correcte de l'extent 3 static_assert(std::extent_v<std::remove_cvref_t<decltype(ary[0])>> == 3); }
Voir aussi
| 
          
           
            
             
              (C++11)
             
            
           
           
          | 
        
         vérifie si un type est un type tableau
          (modèle de classe)  | 
       
| 
          
           
            
             
              (C++11)
             
            
           
           
          | 
        
         obtient le nombre de dimensions d'un type tableau
          (modèle de classe)  | 
       
| 
          
           
            
             
              (C++11)
             
            
           
           
          | 
        
         supprime une dimension du type tableau donné
          (modèle de classe)  | 
       
| 
          
           
            
             
              (C++11)
             
            
           
           
          | 
        
         supprime toutes les dimensions du type tableau donné
          (modèle de classe)  | 
       
| 
          
           
            
             
              (C++23)
             
            
           
           
          | 
        
         un descripteur d'un espace d'index multidimensionnel d'un certain rang
          (modèle de classe)  |