获取别名标准::数组的大小

Getting size of aliased std::array?

本文关键字:数组 标准 获取 别名      更新时间:2023-10-16

例如,考虑:

#include <array>
#include <iostream>
int main()
{
    using Ram_bank = std::array<char, 0x2000>;
    std::cout << "Size of ram bank is: " << Ram_bank::size() << 'n';
    return 0;
}

显然,这不是有效的代码,因为Ram_bank不是实际的类型或对象,而是别名。但是,有没有办法实现这一目标?有没有办法获取别名类型的大小?

您的代码不会失败,因为Ram_bank是别名。它失败了,因为size()是非静态的,您需要一个实例来调用它。科斯塔的回答就是一个例子。

或者,您可以使用std::tuple_size

std::cout << "Size of ram bank is: " << std::tuple_size<Ram_bank>::value << 'n';
您可以

实例化一个数组,然后获取它的大小(因为std::array::size是一个非静态成员函数(。每个半体面的编译器都应该对此进行优化:

std::cout << "Size of ram bank is: " << Ram_bank().size() << 'n';