Humm... A corner case, think about when sizeof for a user provided T
happens to be equal to a cache line size, now you have a dangling char
intruding into the next cache line at an alignment boundary.
if sizeof(T) == CACHE_LINE_SIZE, then cache_line_storage<T> will have:
struct cache_line_storage
{
alignas(CACHE_LINE_SIZE) T data;
char pad[1];
};
Well, this intrudes into the next cache line because
sizeof(cache_line_storage<T>) will be greater than CACHE_LINE_SIZE.
This is a corner case, but, imho, worth pointing out. Sorry for nit
picking.