Подтвердить что ты не робот

У этих членов есть неуказанный заказ?

Коллега сказал мне, что в следующем типе все члены имеют неуказанный порядок в памяти (относительно друг друга).

Я сомневаюсь в этом, потому что все они имеют одинаковый уровень доступа.

Кто прав?

struct foo { public: int x; public: int y; public: int z; };
4b9b3361

Ответ 1

Ваш коллега верен для С++ 03:

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

Но вы правы для С++ 11:

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

(Определите разницу.)