일부 초기화 작업을 수행하려면 다음 코드 섹션과 같은 것을 사용하고 있습니다. 나는 p<T>::i_
의 초기화가 정렬되어 있지 않다는 것을 알고 있습니다. 나는 h
이 주문되었다는 것을 염두에두고, 초기화 된 순서에 대해 추론 할 수 있어야한다. h
의 정의 앞에 p
의 헤더가 포함되어 있다고 가정하면 h
보다 먼저 p<T>::i_
이 초기화된다는 보장이 있습니까?초기화 순서 보장
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