Согласно cppreference , абсолютно безопасно предполагать, что список инициализатора будет завершен до того, как будет выполнено «тело» конструктора (жирный шрифт элемента 4 - мой):
Порядок инициализаторов членов в списке не имеет значения: фактический порядок инициализации следующий:
- 1 Если конструктор предназначен для самого производного класса, виртуальные базовые классы инициализируются впорядок, в котором они появляются в порядке обхода слева направо объявлений декларации базового класса (слева направо относится к появлению в списках базовых спецификаторов)
- 2 Затем инициализируются прямые базовые классыв порядке слева направо, как они появляются в списке базовых спецификаторов этого класса
- 3 Затем не статические члены данных инициализируются в порядке объявления в определении класса.
- 4 Наконец, тело конструктора выполняется
Теперь, хотя cppreference не является действительным стендомard, обычно это точно в таких вопросах.
EDIT: черновик стандарта C ++ 14 (§ 12.6.2) (pp. 283-284 из этого PDF) подтверждает то, что cppreference утверждает. (Да, я знаю, что ОП указала C++11
- но я не смог получить ссылку на этот стандарт в Интернете, и я очень сомневаюсь, что стандарт в этом отношении изменился между 11, 14 и 17!)