title: Private namespace in source files
body: <p>I have a doubt regarding private methods &amp; functions.
  Let's say I have some utility methods that needn't be inside a class. But those same methods need to call other ones that I don't want to expose to the user. For example:</p>
  
  <p><strong>Suspect.h</strong></p>
  
  <pre><code>namespace Suspect {
    /**
    *  \brief This should do this and that and more funny things.
    */
    void VerbalKint(void);  // This is for you to use
  }
  </code></pre>
  
  <p><strong>Suspect.cpp</strong></p>
  
  <pre><code>namespace Suspect {
    namespace Surprise {
      /**
      * \brief The user doesn't need to be aware of this, as long 
      *        the public available VerbalKint does what it should do.
      */
      void KeyserSoze(void) {
        // Whatever
      }
    } // end Surprise
  
    void VerbalKint(void) {
      Surprise::KeyserSoze();
    }
  }
  </code></pre>
  
  <p>So, this layout works. When including the <code>Suspect.h</code>, only <code>VerbalKint</code> is visible.
  This can be as well achieved using a class and marking <code>VerbalKint</code> as static:</p>
  
  <pre><code>class Suspect {
  public:
    // Whatever
    static void VerbalKint(void);
  private:
    static void KeyserSoze(void);
  };
  </code></pre>
  
  <p>I would like to know if there's any difference between the two approaches. Is one better (faster, easier to maintain) than the other?</p>
  
  <p>What are your thoughts?</p>