Я использую что-то вроде следующих разделов кода для инициализации. Я знаю, что инициализация 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