Пошарился в Стандарте насчет требований в выравниванию. Получилось, что если требования к выравниванию любых простых типов не будут степенями одного и того же числа (например двойки — 1, 2, 4, 8, 16), то реализация будет неэффективна в плане использования памяти.
Например, если возможны типы с выравниванием 4 и 6, то при выделении блока памяти размером 6 с помощью new (или malloc), этот блок памяти должен быть выровнен на 12. И объединение, содержащее подобъекты этих типов тоже будет иметь размер 12.
Собственно вопрос такой. Переносимо ли на практике предположение, что alignment requirements любых типов являются степенями двойки? Слышал ли кто-нибудь о платформах, где это не так?