Есть ли интегральный тип, который имеет одинаковый размер и выравнивание в качестве указателя?Есть ли интегральный тип, который имеет одинаковый размер и выравнивание в качестве указателя?
Есть std::intptr_t
и std::uintptr_t
, но я считаю, что они не имеют того же выравнивания, что и указатель.
Какая разница? Смещение указателя с интегральным типом - это неопределенное поведение. –
@BenVoigt Я этого не делаю. Скорее, я вычисляю макеты структур данных во время выполнения, для реализации виртуальной машины, и проще, если целые числа имеют тот же макет, что и указатели. – rightfold
Но если вы планируете компоновку структуры во время выполнения, выравнивание не должно быть проблемой: просто добавьте явные поля заполнения везде, где требуются требования к вытесненным выравниваниям, и вы должны быть в порядке. – rodrigo