logoalt Hacker News

whizztertoday at 10:15 AM4 repliesview on HN

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.


Replies

pjmlptoday at 2:06 PM

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.

ghosty141today at 10:38 AM

pimpl helps more since its trivially implementable in existing codebases while modules are a much bigger pain.

cemdervistoday at 11:02 AM

pimpl also helps to keep data structure layout stable, e.g. Qt's d-pointer convention

knorkertoday at 11:06 AM

pimpl also makes it much easier to make changes without breaking ABI. E.g. shared libraries.