syntax of function Explicit specialization
<p>Based on the <a href="http://www.gotw.ca/publications/mill17.htm" rel="nofollow">tutorial </a>，</p>

<pre><code>// Example 2: Explicit specialization 
// 
template&lt;class T&gt; // (a) a base template 
void f( T ){;}

template&lt;class T&gt; // (b) a second base template, overloads (a) 
void f( T* ){;}     //     (function templates can't be partially 
//     specialized; they overload instead)

template&lt;&gt;        // (c) explicit specialization of (b) 
void f&lt;&gt;(int*){;} // ===&gt; Method one
</code></pre>

<p>I also test the following with VS2010 SP1 without any warning.</p>

<pre><code>template&lt;&gt;        // (c) alternative
void f&lt;int&gt;(int*){;} // ==&gt; Method two
</code></pre>

<p><strong>Question</strong>> Which way is recommended way based on the C++　standard? Method one or Method two?</p>

<p>As you can see the key different between Method one and Method two is as follows:</p>

<pre><code>template&lt;&gt;        
void f&lt;&gt;(int*){;}    // ===&gt; Method one

template&lt;&gt;        
void f&lt;int&gt;(int*){;} // ===&gt; Method two
       ^^^
</code></pre>

<p>Based on the tutorial, we should write the following plain old function instead:</p>

<pre><code>void f(int*){;}
</code></pre>

<p>But that is NOT the question I am asking:)</p>

<p>Thank you</p>
