#include <iostream>
#include <string>
template <std::size_t N>
void showcolumns_num(std::string (&columns)[N])
{
int columns_num=std::extent<typename std::remove_reference<decltype(columns)>::type>::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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKCnRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgp2b2lkIHNob3djb2x1bW5zX251bShzdGQ6OnN0cmluZyAoJmNvbHVtbnMpW05dKQp7CiAgICBpbnQgY29sdW1uc19udW09c3RkOjpleHRlbnQ8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGNvbHVtbnMpPjo6dHlwZT46OnZhbHVlOwogICAgc3RkOjpjb3V0PDwiZnVuY3Rpb24gYXJyYXkgbGVuZ3RoOiAiPDxjb2x1bW5zX251bTw8c3RkOjplbmRsOwp9CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6c3RyaW5nIGNvbHVtbl9saXN0W109eyJjb2wxIiwiY29sMiIsImNvbDMiLCJjb2w0IiwiY29sNSJ9OwoKICAgIC8vIGxvY2FsIGNhbGN1bGF0aW9uIG9mIGNvbHVtbiBudW1iZXIKICAgIGludCBjb2x1bW5zX251bT1zdGQ6OmV4dGVudDxkZWNsdHlwZShjb2x1bW5fbGlzdCk+Ojp2YWx1ZTsKICAgIHN0ZDo6Y291dDw8ImxvY2FsIGFycmF5IGxlbmd0aDogIjw8Y29sdW1uc19udW08PHN0ZDo6ZW5kbDsKCiAgICAvLyBmdW5jdGlvbiBjYWxjdWxhdGlvbiBvZiBjb2x1bW4gbnVtYmVyCiAgICBzaG93Y29sdW1uc19udW0oY29sdW1uX2xpc3QpOwoKICAgIHJldHVybiAwOwp9