PIMPL
Alle private members achter een pointer plaatsen naar een type dat in de header alleen gedeclareerd en in het bronbestand gedefinieerd wordt. Ook bekend als de compilation firewall.
Twee problemen verdwijnen. Het eerste is de buildtijd: normaal moet elk bestand dat een klasse insluit opnieuw gecompileerd worden zodra een private member verandert, hoewel het daar niet bij kan — en de header moet bovendien de headers van alle membertypes binnenhalen. Het tweede is ABI-stabiliteit, de reden dat bibliotheekauteurs het patroon gebruiken: de grootte van het object verandert niet als de private inhoud verandert, dus een gecompileerd programma blijft werken met een nieuwe versie van de bibliotheek. De prijs is een heap-allocatie per object en een indirectie bij elke toegang. De valkuil waar iedereen minstens één keer in trapt: de destructor moet in de header gedeclareerd en in het bronbestand gedefinieerd worden, anders wordt de deleter van unique_ptr geïnstantieerd voor een onvolledig type.