title: Check whether a type is a template specialization or not
body: <p>Given an <strong>arbitrary template class/struct</strong>, just like:</p>
  
  <pre><code>template &lt;typename T&gt;
  struct A {};
  </code></pre>
  
  <p>I would like to perform a <a href="http://en.cppreference.com/w/cpp/header/type_traits" rel="nofollow"><code>&lt;type_traits&gt;</code></a> fashion check <em>(let's name it is_A)</em> to determine whether an <strong>arbitrary</strong> type is a <strong>specialization of A</strong> or not, just like:</p>
  
  <pre><code>#include &lt;type_traits&gt;
  
  template &lt;typename T&gt;
  struct is_A: std::integral_constant&lt;bool, /* perform the check here */ &gt; {};
  
  constexpr bool test0 = is_A&lt; A&lt;int&gt; &gt;::value // true
  constexpr bool test1 = is_A&lt; A&lt;float&gt; &gt;::value // true
  constexpr bool test2 = is_A&lt; int &gt;::value // false
  constexpr bool test2 = is_A&lt; float &gt;::value // false
  </code></pre>
  
  <p><strong>How is that possible?</strong></p>
  
  <p>Thanks in advance</p>