|
Boost : |
Subject: Re: [boost] Silent change in boost 1.36 alignment_of<> template with gcc 4.3
From: Jon Biggar (jon_at_[hidden])
Date: 2008-11-09 01:42:11
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_at_[hidden] jon_at_[hidden] jonbiggar_at_[hidden]
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk