我正在使用類似以下代碼段的內容來進行一些初始化。我知道p<T>::i_
的初始化是無序的。我認爲h
是有序的,所以我應該能夠推斷它初始化的順序。鑑於p
的標題包含在h
的定義之前,是否保證p<T>::i_
將在h
之前被初始化?是否保證初始化順序
struct helper
{
template <typename T>
helper(const T&, int i)
{
p<T>::i_::push_back(i);
}
};
static helper h;
p類定義如下。
template <typename T>
struct p
{
static std::vector<int> i_;
};
template <typename T>
std::vector<int> p<T>::i_;
這不會編譯 - 'helper'沒有默認的構造函數。 –
什麼構造函數被用來初始化'h'? –
「我相信'h'是有序的」。相比有什麼? – jrok