【发布时间】:2013-08-27 19:53:45
【问题描述】:
我正在使用类似于以下代码部分的代码来进行一些初始化。我知道p<T>::i_的初始化是无序的。我相信h 是有序的,所以我应该能够推断出它的初始化顺序。鉴于p 的标头包含在h 的定义之前,是否可以保证@987654325 @会在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已订购”。与什么相比排序?