title: Strange GCC error: expected primary-expression before ',' token
body: <p>I'm still trying to migrate from MSVC to GCC, but I can't seem to find a solution to the following problem:</p>
  
  <pre><code>template &lt; typename A, typename B, typename C, typename D &gt;
  class Test
  {
  public:
      Test (B* pObj, C fn, const D&amp; args) : _pObj(pObj), _fn(fn), _args(args)
      {
      }
  
      A operator() ()
      {
          return _args.operator() &lt; A, B, C &gt; (_pObj, _fn); // error: expected primary-expression before ',' token
      }
  
      B* _pObj;
      C _fn;
      D _args;
  };
  </code></pre>
  
  <p>Please help!</p>