Trying out std::tr1::array on a mac i\'m getting 16 byte alignment.
std::tr1::array
sizeof(int) = 4; sizeof( std::tr1::array< int,3 > ) = 16; sizeof
std::array is actually not an array, but a struct that contains an array. It's the struct that is padded, not the array. Compilers are allowed to add padding to the end of a struct whenever they want.