I\'ve recently encountered what I think is a false-sharing problem in my application, and I\'ve looked up Sutter\'s article on how to align my data to cache lines. He suggests t
You can't have arrays of size 0, so 1 is required to make it compile. However, the current draft version of the spec says that such padding is unecessary; the compiler must pad up to the struct's alignment.
Note also that this code is ill-formed if CACHE_LINE_SIZE
is smaller than alignof(T)
. To fix this, you should probably use [[align(CACHE_LINE_SIZE), align(T)]]
, which will ensure that a smaller alignment is never picked.