pointer Implementation idioms are programming techniques not design patterns
- removes implementation details of a class from its object representation by placing them in a separate class, accessed through pointer
because private data members of a class participlate in its object representation, affecting size and layout, and because private member functions of a class participate in overload resolution
used in exception safety