why this code call general template function in GCC?
<pre><code>#include&lt;iostream&gt;

using namespace std;

// define the general compare template
 template &lt;class T&gt;
 int compare(const T&amp; t1, const T&amp; t2) {
   cout&lt;&lt; "Common_T"&lt;&lt;endl;
   return 0;

 }
 template&lt;&gt;
 int compare&lt;const char*&gt;( const char * const&amp; s1,
                          const char * const&amp; s2)
 {
    cout&lt;&lt; "Special_T"&lt;&lt;endl;
    return 0;
 }
typedef const char  char6[6];
     template&lt;&gt;
             int compare&lt;char6&gt;(const char6&amp; s1,const char6&amp; s2)
    {
            cout &lt;&lt; "Special_Char6_T" &lt;&lt; endl;
             return 0;
    }

 int main() {
     int i = compare("hello" , "world");
 }
</code></pre>

<p>the result is:</p>

<pre><code>Common_T
</code></pre>

<p>My question is: why don't output "Special_Char6_T"???</p>
