title: Function template specialization with reference to pointer
body: <p>I have a template function:</p>
  
  <pre><code>template&lt;typename T&gt;
  void foo(const T&amp; value) { bar(value); x = -1; }
  </code></pre>
  
  <p>I want to specialize it for a set of types:</p>
  
  <pre><code>template&lt;&gt;
  void foo&lt;char&gt;(const char&amp; value) { bar(value); x = 0; }
  template&lt;&gt;
  void foo&lt;unsigned char&gt;(const unsigned char&amp; value) { bar(value); x = 1; }
  </code></pre>
  
  <p>It works ok. When I compile this:</p>
  
  <pre><code>template&lt;&gt;
  void foo&lt;char*&gt;(const char*&amp; value) { bar(value); x = 2; }
  </code></pre>
  
  <p>I get an error:</p>
  
  <pre><code>error C2912: explicit specialization; 'void foo(const char *&amp;)' is not a specialization of a function template
  </code></pre>
  
  <p>Is it possible to specialize with <code>char*</code> pointer type parameter without typedef'ing it?</p>