Trait to check if some specialization of template class is base class of specific class <p>There is <code>std::is_base_of</code> in modern STL. It allow us to determine whether the second parameter is derived from first parameter or if they are the same classes both or, otherwise, to determine is there no such relation between them.</p> <p>Is it possible to determine whether the one class is derived from some concrete template class without distinction of which concrete actual parameters involved to its specialization?</p> <p>Say, we have;</p> <pre><code>template&lt; typename ...types &gt; struct B {}; </code></pre> <p>And</p> <pre><code>template&lt; typename ...types &gt; struct D : B&lt; types... &gt; {}; </code></pre> <p>Is it possible to define a type trait:</p> <pre><code>template&lt; typename T &gt; is_derived_from_B; </code></pre> <p>Such that it is derived from <code>std::true_type</code> when <code>T</code> is any specialization of <code>D</code> and derived from <code>std::false_type</code> if <code>T</code> is not derived from any specialization of <code>B</code>?</p>