Предположим, у меня есть шаблонная функция, которая работает с указателями на еще неизвестный тип T
. Теперь, если тип T
оказывается void*
на 64-битной платформе, то он должен быть выровнен по 8 байтам, но если T
оказывается char
, он должен быть выровнен по 1 байту, и если T
оказывается классом, то его требования к выравниванию будут зависеть на его переменных-членах.
Все это можно вычислить на бумаге, но как заставить компилятор выдать требования к выравниванию для заданного типа T
?
Есть ли способ найти во время компиляции требования к выравниванию для данного типа?
alignof
. - person avakar   schedule 06.11.2012alignof
из C++11 или вы можете выровнять размер поdouble
, это не стандартно, но работает для всех известных мне компиляторов! - person BigBoss   schedule 06.11.2012