Здравствуйте, szag, Вы писали:
S>в общем пока придумал вот такую конструкцию
S>S>template<class T, std::size_t val = sizeof(T)>
S>struct MyAlign
S>{
S> enum
S> {
S> Result = ((val / 8) * 8 == val) ? 0 : (((val / 8) + 1) * 8) - val
S> };
S>};
S>
S>это работает, но как-то это не по-казачьи. Может кто-то предложет что-то получше?
1. 'offsetof' корректно(гарантированно) работает для POD
2.
почему не использовать указатели(враперы для указателей) на члены класса для обращения к таковым?
т.к. Ваша реализация(вычисления) вероятно сильно будет зависить от реализации/настроек компилятора,
и/или не учитывает #pragma pack's, а у Вас не видно использований 'alignof'(MSVC '__alignof'). И т.п.
Если считать(

) то более корректно с учетом ниже сказанного.
2.a) заменить "8" на что-то типо:
struct someStruct {};
int opt=alignof(someStruct); // get compiler option 'alignment'
2.b) учесть выравнивание самого класса(влияние #pragma pack's)
3.