我正在使用类似于以下代码部分的代码来进行一些初始化。我知道的初始化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_;