
David Abrahams wrote:
on Sat Nov 08 2008, Mathias Gaunard <mathias.gaunard-AT-ens-lyon.org> wrote:
Jon Biggar wrote:
Unfortunately, this broke some code I had written that did structure introspection, because gcc's __alignof__() returns 8 for double on the x86 architecture, but actually only aligns doubles on 4 byte boundaries inside structures. I personally never understood why gcc's alignof returns that. It doesn't even make sense, since the size of double is not a multiple of 8, so multiple doubles right after each other can't possibly be 8-byte aligned.
We could easily either specialize our way around it or limit the result of alignment_of<T> to sizeof(T). The latter seems like a smart thing to do anyway.
Thoughts?
I'm becoming convinced that we just shouldn't us the __alignof__() builtin from gcc because it lies. -- Jon Biggar jon@floorboard.com jon@biggar.org jonbiggar@gmail.com