I see that there is some special code in type_with_alignment for Borland C++, partly because it is broken and partly because we can do a better job using compiler-specific features.
Why not do the same for other compilers? For instance, on GCC: template<typename T> struct alignment_of { BOOST_STATIC_CONSTANT(std::size_t, value = __alignof__(T)); }; and template<std::size_t Align> struct type_with_alignment { struct __attribute__((__aligned__)) type {}; }; template<> struct type_with_alignment<1> { struct __attribute__((__aligned__(1))) type {}; }; template<> struct type_with_alignment<2> { struct __attribute__((__aligned__(2))) type {}; }; template<> struct type_with_alignment<4> { struct __attribute__((__aligned__(4))) type {}; }; template<> struct type_with_alignment<8> { struct __attribute__((__aligned__(8))) type {}; }; template<> struct type_with_alignment<16> { struct __attribute__((__aligned__(16))) type {}; }; template<> struct type_with_alignment<32> { struct __attribute__((__aligned__(32))) type {}; }; It'll reduce the compile time for this platform and give us exact answers. The only concern I can see is that we might miss some important alignment number (say, 17); we could avert this problem by creating everything from 1 to 32, and it would still be much simpler than the current code. Would anyone object to me making this change for GCC? Doug _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost