| ▲ | whizzter 4 days ago | |
Where are we with modules, isn't pimpl there largely to avoid costs related to including the world? I was pondering on why he was putting the defaulted methods in the cpp, any particular reasons? I did realize that the indirect version is required to be in the cpp since the header won't know how to copy without knowing the definition of the impl class. | ||
| ▲ | pjmlp 4 days ago | parent | next [-] | |
Even with modules, if you expose such types over the ABI, naturally the machine code memory layout will change, this is an issue regardless of the language. | ||
| ▲ | binary132 4 days ago | parent | prev | next [-] | |
The article explains why, indirect and unique_ptr are templated and require the complete definition of the type, and the default impls of those methods use methods of the templated types. | ||
| ▲ | ghosty141 4 days ago | parent | prev | next [-] | |
pimpl helps more since its trivially implementable in existing codebases while modules are a much bigger pain. | ||
| ▲ | knorker 4 days ago | parent | prev | next [-] | |
pimpl also makes it much easier to make changes without breaking ABI. E.g. shared libraries. | ||
| ▲ | cemdervis 4 days ago | parent | prev [-] | |
pimpl also helps to keep data structure layout stable, e.g. Qt's d-pointer convention | ||