Right, so if your holder object is heap-allocated, you need to dereference a pointer so that you can <i>then</i> call into the implementation. That&#x27;s inefficient, bad for the cache, and puts needless pressure on the heap allocator. C++ classes built out of pure virtual member functions are just as compatible. If you use something COM-like, you can reference-count and manage them in a uniform way.<p>PIMPL as commonly described is a waste of good electricity, like most design patterns. Especially because most of the time I see it used, it&#x27;s from the keyboard of some well-meaning but inexperienced developer who doesn&#x27;t even need to maintain binary compatibility.