Когда вызывается конструктор CRTPBase
, CRTPChild
еще не полностью создан, поэтому вызов его функции-члена является неопределенным поведением.
Способ проявления неопределенного поведения зависит от платформы, компилятора и фазы луны.
В частности, когда ваш член имеет тип int, тот факт, что он еще не создан, не имеетвызвать сбой программы при использовании int - нет инвариантов для int
.Вектор, с другой стороны, имеет инварианты, поэтому доступ к неструктурированному вектору нарушит их и приведет к неправильному доступу к памяти.