std::array 大括号如何初始化?

How does std::array brace initialize?

本文关键字:初始化 array std      更新时间:2023-10-16

由于数组没有构造函数或析构函数,也没有公共的非静态成员变量,数组如何允许大括号初始化?不允许尝试初始化以下类型:

template<typename T, std::size_t num>
class Array
{
    T data[num];
};

如何在没有任何构造函数或析构函数的情况下以大括号可初始化的方式编写此类型,以保持该类型简单可构造和可破坏,并且不公开私有数组成员?

std::array的构造函数是隐式声明的。

假设std::array定义为

template<
    class T,
    std::size_t N
> struct array;

它只包含一个成员T[N],它具有public访问权限。

因此,可以通过为聚合初始化编写适当的语法(即使用大括号(来初始化std::array

相关文章: