title: A simpler form of pimpl
body: <p>Why not choose this design :</p>
  
  <pre><code>// A.hpp
  class A
  {
  public:
      void do_something();
  };
  
  // A.cpp
  #include "A.hpp"
  #include &lt;vector&gt;
  
  std::vector&lt;int&gt; impl_database_for_do_something;
  
  static void impl_helper_for_do_something(const std::vector&lt;int&gt;&amp; database){}
  
  void A::do_something(){ impl_helper_for_do_something(impl_database_for_do_something); }
  </code></pre>
  
  <p>Instead of this one :</p>
  
  <pre><code>// A.hpp
  #include &lt;vector&gt;
  class A
  {
  public:
      void do_something();
  
  private:
      std::vector&lt;int&gt; database_for_do_something_;
      void helper_for_do_something(const std::vector&lt;int&gt;&amp; database){}
  };
  </code></pre>
  
  <p>Could I hide implementation details and speed-up compilation with variables and static functions defined in the source file ? If not, what's wrong with this design (besides inheritance) ?</p>