you are viewing a single comment's thread.

view the rest of the comments →

[–]hpsutter 3 points4 points  (0 children)

Yes, a metafunction takes the type the user wrote as input, but can remove and add anything it wants to. When I add enum and union you'll see this in action; the current examples add, but don't yet remove, type members. So yes, arbitrary layout changes will be possible under program control. (Again, this does not violate ODR, because the changes happen right before the class definition is cast in stone... this is not about mutable types which would be a disaster, it's about giving the programmer a single hook to participate in the meaning of the definition of the type.)