title: Classes with same name in different namespace
body: <p>I am writing a library. Is it a bad idea to have two classes with same name but each of the classes are in different namespace?</p>
  
  <p>Using name spaces:</p>
  
  <pre><code>//forward declaration
  namespace sparse {
      class matrix;
  }
  namespace dense {
      class matrix;
  }
  
  namespace dense {
      typedef Index uint64_t;
      class matrix {
          public:
          sparse::matrix tosparse();
      };
  }
  
  namespace sparse {
      typedef Index uint32_t;
      class matrix {
          dense::matrix todense();
      };
  }
  </code></pre>
  
  <p>Alternatively, I can use long names:</p>
  
  <pre><code>class sparse_matrix
  ...
  </code></pre>