gpt4 book ai didi

c++ - 具有默认成员初始化器的 std::array 的零初始化元素

转载 作者:IT老高 更新时间:2023-10-28 23:11:28 26 4
gpt4 key购买 nike

假设我有一个这样的类模板:

template<typename T, size_t N>
struct S {
std::array<T,N> a;
};

我可以在 a 上放置一个默认的成员初始化器吗,

template<typename T, size_t N>
struct S {
std::array<T,N> a = ???;
};

这样无论 T 是什么,a 的元素总是会被初始化(永远不会有不确定的值)?即,即使 T 是像 int 这样的原始类型。

最佳答案

这个:

template<typename T, size_t N>
struct S {
std::array<T,N> a = {};
};

这将递归 copy-initialize each element from {} .对于 int,它将进行零初始化。当然,总有人可以写:

struct A {
A() {}
int i;
};

这会阻止 i 被初始化。但这在他们身上。

关于c++ - 具有默认成员初始化器的 std::array 的零初始化元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54052714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com