std::array 大括号如何初始化?
How does std::array brace initialize?
由于数组没有构造函数或析构函数,也没有公共的非静态成员变量,数组如何允许大括号初始化?不允许尝试初始化以下类型:
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
。
相关文章:
- 标准::unordered_map 中的 std::array 的值初始化
- 将初始化器列表/聚合初始化转发到 std::array 成员
- 为什么 char 可以在 std::array 中初始化为 nullptr,而不是单独初始化?
- 为什么不能用两层列表初始值设定项初始化 2D std::array?
- 如何在类的初始值设定项列表中初始化 std::array,而不对数组的大小进行硬编码
- std::array 大括号如何初始化?
- 我正在使用dev c ++,但收到错误(C++98'array'必须由构造函数初始化)
- 为什么我必须在初始化 std::array<SomeStruct, size> 时指定每个项目的类型C++
- 我可以在初始化之前使用 std::array 成员变量中的 data() 指针吗?发出警告
- 使用 constexpr 初始化 std.array 中的对象
- 使用 std::make_shared 初始化 std::shared_ptr 将 std::array 作为参数
- 初始化 std::initializer_list 通过 std:: 初始化 std::p air 在初始化 std::array 时不起作用?
- 当 T 不可默认构造时,构造函数初始值设定项列表中 std::array<T,N> 的初始化
- 在构造函数中初始化私有 std::array 成员
- 使用元编程递归初始化 std::array
- 使用常量值初始化 std::array
- 使用 constexpr 和 std::array 进行静态初始化来替换动态初始化的 std::vector 的闰年
- 是否可以以编程方式初始化 constexpr std::array 成员
- 使用声明中的元素类型隐式初始化 std::array
- 初始化 **Array 以及标题中实际需要的内容,以便它通过