Short explanation:

 

It combines reflection over the given struct and its members with

 

  std::meta::define_aggregate

 

from P2996 to metaprogrammatically define (reify) the derived new member types for the unaligned version.

 

 

 

For the full solution with arbitrary std::unaligned / std::optional / ..., better support for universal template parameters would probably be needed (which is in the works)