title: Template specializations for inner class
body: <p>consider the following code :</p>
  
  <pre><code>struct X
  {
      template &lt;typename T&gt;
      class Y
      {};
   };
  template&lt;&gt;
  class X::Y&lt;double&gt;{
  };
  </code></pre>
  
  <p>here we are specializing the Y class for the type double and the code works fine. the problem is that if I change the code to this:</p>
  
  <pre><code>template&lt;typename A&gt;
  struct X
  {
      template &lt;typename T&gt;
      class Y
      {};
   };
  template&lt;typename A&gt;
  class X&lt;A&gt;::Y&lt;double&gt;{
  };
  </code></pre>
  
  <p>the compiler will report an error:</p>
  
  <blockquote>
    <p>'X::Y': explicit specialization is using partial
    specialization syntax, use template &lt;> instead!</p>
  </blockquote>
  
  <p>dose any one know how can I specialize class Y in this case? </p>