[英]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.