https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79024
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Xidorn Quan from comment #2) > ABI requires a different alignment than in struct? Yes. > That's interesting. But I > think developers (I mean, users of compilers) are generally more interested > on alignment requirement in struct rather than that for ABI, and most > description of the concept "alignment" refers to that in struct, so it is > probably better make alignof / alignas report that value. It's arguable whether that would be standard conforming. alignas(T) tells you the alignment needed for an obejct of type T. If you want the alignment for a subobject of type T that's a different question, and you can get it by doing: struct S { T t; }; alignas(S) Or more generally: template<typename T> struct alignof_subobject { struct S { T t; }; static constexpr std::size_t value = alignof(S); }; struct Test2 { char c; alignas(alignof_subobject<uint64_t>::value) uint64_t u; };