title: Class templates with duplicate names?
body: <p>Is it possible to define two different template (by number of template arguments) classes with the same name?</p>
  
  <p>Here's what I am trying to do:</p>
  
  <pre><code>namespace MyNamespace
  {
  
  template&lt;class TRet&gt;
  class FunctionObject
  {
      typedef typename TRet ReturnType;
      virtual ReturnType const operator()() const = 0;
  };
  
  
  template&lt;class TRet, class TArg0&gt;
  class FunctionObject
  {
      typedef typename TRet ReturnType;
      typedef typename TArg0 FirstArgumentType;
      virtual ReturnType const operator()(FirstArgumentType const &amp;arg) const = 0;
  };
  
  }
  </code></pre>
  
  <p>I get an error mentioning too many template arguments at the end of closing bracket of the second <code>FunctionObject</code> struct definition.</p>
  
  <p>I know this can be done in C#, but wasn't sure about C++. Can someone please shed some light here?</p>