title: Confusing Template error
body: <p>I've been playing with clang a while, and I stumbled upon "test/SemaTemplate/dependent-template-recover.cpp" (in the clang distribution) which is supposed to provide hints to recover from a template error.</p>
  
  <p>The whole thing can be easily stripped down to a minimal example:</p>
  
  <pre><code>template&lt;typename T, typename U, int N&gt; struct X {
      void f(T* t)
      {
          // expected-error{{use 'template' keyword to treat 'f0' as a dependent template name}}
          t-&gt;f0&lt;U&gt;();
      }
  };
  </code></pre>
  
  <p>The error message yielded by clang:</p>
  
  <pre><code>tpl.cpp:6:13: error: use 'template' keyword to treat 'f0' as a dependent template name
           t-&gt;f0&lt;U&gt;();
              ^
              template 
  1 error generated.
  </code></pre>
  
  <p>... But I have a hard time understanding where exactly one is supposed to insert the <code>template</code> keyword to have the code to be syntactically correct?</p>