Ответ 1
Ваш коллега верен для С++ 03:
[C++03: 9.2/12]:
Нестационарные члены данных объявленного класса (неединичного) без промежуточного спецификатора доступа выделяются так, что более поздние члены имеют более высокие адреса в объекте класса. Порядок распределения нестатических элементов данных, разделенных спецификатором доступа, не указан (11.1). [..]
Но вы правы для С++ 11:
[C++11: 9.2/14]:
Нестационарные члены данных (неединичного) класса с тем же контролем доступа (раздел 11) распределяются так, что более поздние члены имеют более высокие адреса в объекте класса. Порядок распределения нестатических элементов данных с различным контролем доступа не указан (11). [..]
(Определите разницу.)