The pimpl idiom, as far as I can tell, hides a private implementation behind a forward declared symbol name so it can be declared and used in the private cpp module.
Example: https://cpppatterns.com/patterns/pimpl.html
As far as I can tell, because the class hosint the pimpl needs to know about its structure (size, aligment), the pimpl must be indirect through a pointer of some sort.
(or allocated as a block of sufficient size then moved/created into the location where it is reinterpreted by cast later.)
Does the upcoming modules specification solve this in any way?