title: The Pimpl Idiom in practice
body: <p>There have been a few questions on SO about the <em>pimpl idiom</em>, but I'm more curious about how often it is leveraged in practice.</p>
  
  <p>I understand there are some trade-offs between performance and encapsulation, plus some debugging annoyances due to the extra redirection.</p>
  
  <p>With that, is this something that should be adopted on a per-class, or an all-or-nothing basis?  Is this a best-practice or personal preference?</p>
  
  <p>I realize that's somewhat subjective, so let me list my top priorities:</p>
  
  <ul>
  <li>Code clarity </li>
  <li>Code maintainability</li>
  <li>Performance</li>
  </ul>
  
  <p>I always assume that I will need to expose my code as a library at some point, so that's also a consideration.</p>
  
  <p><strong>EDIT:</strong> Any other options to accomplish the same thing would be welcome suggestions.</p>