samedi 23 janvier 2021

get total number of elements in a multidimensional array using std::extent

How to find total number of elements in a multidimensional array using std::extent. This is my sample code:

#include <iostream>
#include <type_traits>

int main()
{
    int32_t int_arr[10][100][1000];
    int32_t no_of_elements = 1;
    
    // compiler error in below for loop block
    for (int32_t i = 0; i < std::rank<decltype(int_arr)>{}; ++i)
        no_of_elements *= std::extent<decltype(int_arr), i>{};
        
    no_of_elements *= std::extent<decltype(int_arr), 0>{};
    no_of_elements *= std::extent<decltype(int_arr), 1>{};
    no_of_elements *= std::extent<decltype(int_arr), 2>{};
    std::cout << no_of_elements << std::endl;

    std::cout << sizeof(int_arr) / sizeof(std::remove_all_extents<decltype(int_arr)>::type) << std::endl;
        
    return 0;
}

error: the value of ‘i’ is not usable in a constant expression 9 | no_of_elements *= std::extent<decltype(int_arr), i>{};

Aucun commentaire:

Enregistrer un commentaire