Если класс is_standard_layout является достаточным для того, чтобы гарантировать, что данный нестатический элемент данных всегда будет иметь одинаковое смещение от адреса объекта (то же самое в разных экземплярах этого класса, общесистемного)?Будет ли элемент данных класса standard_layout иметь фиксированное смещение от адреса объекта?
ответ
Это должно быть выполнено для объектов любого типа (в рамках программы). Доступ к подобъекту происходит через смещения, которые известны во время компиляции и постоянны в машинных кодах. Для типов SL вы можете проверить это через offsetof
, что гарантированно будет работать для стандартных макетов, и в основном подразумевает равномерное смещение.
Здесь говорится [здесь] (http://www.cplusplus.com/reference/cstddef/offsetof/), что 'offsetof' требует класс POD, который является более сильным требованием, чем standard_layout. Вот почему я пришел сюда, чтобы спросить. – Museful
@tennenrishin Проверьте вкладку C++ 11. – Columbo
О, плагин для браузера не позволял ему отображать вкладки, поэтому он перечислял все требования со всех стандартов! Это действительно не смутило мой день для меня. Благодарю. – Museful
Я думаю, что это также зависит от размера слова и выравнивания. –
@ ZangMingJie Я имел в виду только гарантию процесса. Будет редактировать. – Museful