jjzjj

c++ - 如何在允许空数组的情况下使用模板函数计算 C++ 数组项

我使用以下模板函数来计算数组项:#includetemplateconstexprsize_tcountof(T(&)[N]){returnN;}intmain(void){struct{}arrayN[]={{},{},{}};printf("%zu\n",countof(arrayN));return0;}它有效,但不适用于空数组:struct{}array0[]={};printf("%zu\n",countof(array0));gcc5.4输出:error:nomatchingfunctionforcallto‘countof(main()::[0])’note:candid

c++ - 是否有标准名称(模板或宏)来替换 ARRAY_SIZE、_countof 等?

我不是在谈论std::array或任何东西,只是经典的VanillaC/C++数组。我知道可以实现ARRAY_SIZE/_countof的各种方式,我只是想知道他们是否已经设法为此标准化了一个名称(在std::我假设)。如果没有,是否有相关建议? 最佳答案 当前的解决方法std::extent-数组的大小如果您正在使用native数组,您可以使用std::extent来自,用于生成数组的Nth维(默认为第一个)中的元素数。inta1[1024];inta2[std::extent::value];//int[1024]一点间接(通用