[英]Zero-initializing elements of a std::array with a default member initializer
假设我有一个这样的类模板:
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 = {};
};
这将以递归方式从{}
复制初始化每个元素 。 对于int
,这将零初始化。 当然,有人总能写:
struct A {
A() {}
int i;
};
这将阻止i
被初始化。 但那就是他们。
std::array
是一种聚合类型。 您可以使用空括号{}
聚合初始化它,并相应地初始化std::array
包含的T
的内部数组的元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.