 <p>If you have <code>template&lt;class T&gt; class X;</code> you don't expect <code>X&lt;3&gt;</code> to work and deduce that <code>T</code> is <code>int</code>, do you? The same is here <code>IsFunc&lt;FunctionA&gt;</code> is invalid, but <code>IsFunc&lt;void()&gt;</code> is fine. HTH</p>