On Tuesday, 14 June 2016 at 23:19:12 UTC, Walter Bright wrote:
On 6/14/2016 3:38 PM, Guillaume Boucher wrote:
Isn't it guaranteed that x.sizeof >= x.alignof? (At least it
is in C and C++.)
So the alignment should be of type size_t and not of type
uintptr_t.
Also in general cast(uint)ptr%alignment is wrong since
alignment does not need
to be 32 bit. However, cast(size_t)ptr%alignment is be
correct in any case.
There is no conceivable case where alignment will be > 32 bits,
nor not being a power of 2.
There are many cases in which alignment in 64bits.
There is nothing that says that x.sizeof >= x.alignof must be
respected, but really, if you don't respect that, you are simply
wasting space and cache without getting any benefit (the purpose
of alignment is to avoid store/load across cache lines).