簡體   English   中英

使用默認成員初始值設定項初始化std :: array的元素

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM