Порядок инициализации нестатических элементов определяется порядком их появления в определении класса. Это не связано с порядком, в котором эти члены перечислены в списке инициализатора конструктора.
Ваш пример;
Constructor(int number1, int number2) :
m_number1(number1),
m_number2(m_number1 > 0 ? 0 : number2)
{
}
не будет работать так, как вы ожидаете, если m_number2
появится раньше m_number1
в определении класса.
Полагаться на определенный порядок может быть рискованно, если обновление класса обновляется - поскольку обновления могут изменить порядок, в котором нестатические члены появляются в объявлении класса (например, если какой-либо член команды решает, что члены более логически сгруппированы в разными способами).