mercredi 4 février 2015

local array length is different from when it is called from a function

In the following code, std::extent<decltype(columns)>::value calculates the length of the given array. However, when the array is a function argument, the compiler behaves in different way. Could some one help me how to fix it?


output:



local array length: 5


function array length: 0



code:



#include <iostream>
#include <string>

void showcolumns_num(std::string columns[])
{
int columns_num=std::extent<decltype(columns)>::value;
std::cout<<"function array length: "<<columns_num<<std::endl;
}


int main()
{
std::string column_list[]={"col1","col2","col3","col4","col5"};

// local calculation of column number
int columns_num=std::extent<decltype(column_list)>::value;
std::cout<<"local array length: "<<columns_num<<std::endl;

// function calculation of column number
showcolumns_num(column_list);

return 0;
}

Aucun commentaire:

Enregistrer un commentaire