title: Does replacing template with namespace cause serious trouble for my code
body: <p>If I have a code similar to this:</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  template&lt;typename T&gt;
  class compare
  {
  public:
      bool comparison(T a,T b)
      {
          return (a&gt;b);
      }
  
  };
  
  int main()
  {
  
      int a=6,b=5;
      compare&lt;int&gt; cmp_i;
      std::cout&lt;&lt;cmp_i.comparison(a,b)&lt;&lt;std::endl;
  
      double c=7.0,d=7.5;
      compare&lt;double&gt; cmp_d;
      std::cout&lt;&lt;cmp_d.comparison(c,d)&lt;&lt;std::endl;
  
      return 0;
  }
  </code></pre>
  
  <p>and since I am very inclined to remove template from my program I use namespaces to solve the problem:</p>
  
  <p>main.cpp:</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  namespace int_space
  {
      typedef int T;
      #include "base.hpp"
  }
  
  namespace double_space
  {
      typedef double T;
      #include "base.hpp"
  }
  
  int main()
  {
  
      int a=6,b=5;
      int_space::compare cmp_i;
      std::cout&lt;&lt;cmp_i.comparison(a,b)&lt;&lt;std::endl;
  
      double c=7.0,d=7.5;
      double_space::compare cmp_d;
      std::cout&lt;&lt;cmp_d.comparison(c,d)&lt;&lt;std::endl;
  
      return 0;
  }
  </code></pre>
  
  <p>base.hpp:</p>
  
  <pre><code>class compare
  {
  public:
      bool comparison(T a,T b)
      {
          return (a&gt;b);
      }
  };
  </code></pre>
  
  <p>Both do the same thing but the second one does not use any template.</p>
  
  <p>I wonder if this trick makes any serious problem for the future of my code when extending.</p>