padding and alignment are unspecified by the ISO standard C++ specification and hence unreliable.
The use of the word "exact" in the quote is exaggeration. The Itanium ABI (which GCC uses) may specify these things (as within specifying ranges) as needed rather than always and exact ly.
Packing is in fact reliable and predictable within the use of toolchains assuming predetermined target architecture & environment- viz. ABI. When all target specific details applicable to the tool-chain are predetermined __attribute__ ((packed))
like any other construct will generate output predictably for the tool-chain to work correctly.