小编sri*_*irt的帖子

constexpr返回多维C风格数组的维度元组

有没有办法扩展/修改/实现constexpr来返回多维C风格数组维度的std :: tuple?

#include <iostream>
#include <tuple>
template<typename T, std::size_t N>
auto arraysize(T (&arr)[N])
{
    return std::make_tuple(N);
}
Run Code Online (Sandbox Code Playgroud)

IOW,如何使arrayize适用于任何维数组?以上"工作"但只返回一个维度:

int i[5];
std::cout << std::get<0>(arraysize(i)) << std::endl;
Run Code Online (Sandbox Code Playgroud)

工作,并返回5.并且,

char c[3][4];
std::cout << std::get<0>(arraysize(c)) << std::endl;
Run Code Online (Sandbox Code Playgroud)

工作,并返回3,但是

std::cout << std::get<1>(arraysize(c)) << std::endl;
Run Code Online (Sandbox Code Playgroud)

不编译因为arraysize()没有正确编码.有没有办法将其编码为constexpr来处理任何维数组?尝试使用参数包但没有成功.

c++ arrays multidimensional-array

2
推荐指数
1
解决办法
154
查看次数

标签 统计

arrays ×1

c++ ×1

multidimensional-array ×1