David Abrahams wrote: [...]
> Even if what you wrote made sense, which I'm not sure it does, > > [to me at least - how can a word boundary be a number (max over > all types T of alignment_of<T> - sizeof(char)), rather than an > address? It is the result of arithmetics between sizeof(char)s, which is of type size_t. It can be converted back to a char *. > And then why subtract sizeof(char), i.e. 1, from the > maximal alignment?] > > that algorithm relies on a big non-portable assumption, doesn't it? Yes, but simple examples are faster to understand. > Even if you enumerated all non-class types, there's no reason to think > that the maximal alignment has any relationship to a machine word. No exactly, but it will be a factor of the word boundary (wb = 4, data_alignment = 8; 2 * 4 = 8). [...] Example is more consistant here: - The processor aligns each character to 8 bits. - The processor aligns each integer to 32 bits. - BOOT_DATA_ALIGNMENT is set to 8 0x8000 character 0x8001 padding 0x8002 padding 0x8003 padding 0x8004 padding 0x8005 padding 0x8006 padding 0x8007 padding 0x8008 integer 0x800A integer 0x800B integer 0x800C integer In this case: padding_of<char> will be equal to 7. Philippe A. Bouchard _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost