title: Function template specialization and the Abrahams/Dimov example
body: <p>(I'm assuming knowledge of the <a href="http://www.gotw.ca/publications/mill17.htm" rel="noreferrer">Abrahams/Dimov example</a> in this question.)</p>
  
  <p>Assume there is some 3rd-party code in a header that like this, which you cannot modify:</p>
  
  <pre><code>template&lt;class T&gt; void f(T);    // (1) base template 1
  template&lt;class T&gt; void f(T *);  // (2) base template 2
  template&lt;&gt; void f&lt;&gt;(int *);     // (3) specialization of (2)
  </code></pre>
  
  <p>The question is:</p>
  
  <p>If I have been given the declarations above as-is, <em>is it possible</em> for me to now specialize the base template 1 for the case where <code>T = int *</code> (for example)?</p>
  
  <p>Or does the mere declaration of base template 2 imply that base template 1 can no longer be specialized (at least for pointers)?</p>