Template function as template argument for template functor
<p>I want to do something like this, does anyone has an idea whether it is possible?</p>

<pre><code>template&lt;typename T&gt; using pLearn = T (*)(T, T, const HebbianConf&lt;T&gt; &amp;);
template&lt;typename T&gt; using pNormal = T (*)(T, T);
template&lt;typename T&gt; using pDerivative = T (*)(T, T, T);

template &lt;class Type, pLearn LearnCB, pNormal NormalCB, pDerivative DerivCB&gt;
class TransfFunction {
public:
  static Type learn(Type a, Type b, const HebbianConf&lt;Type&gt; &amp;setup) { return LearnCB&lt;Type&gt;(a, b, setup); };
  static Type normal(Type a, Type b) { return NormalCB&lt;Type&gt;(a, b); };
  static Type normal(Type a, Type b, Type c) { return DerivCB&lt;Type&gt;(a, b, c); };
};
</code></pre>

<p>Errors: </p>

<pre><code>In file included from /Functions.cpp:2:0:
/Functions.h:207:23: error: ‘pLearn’ is not a type
 template &lt;class Type, pLearn LearnCB, pNormal NormalCB, pDerivative DerivCB&gt;
                       ^
/Functions.h:207:39: error: ‘pNormal’ is not a type
 template &lt;class Type, pLearn LearnCB, pNormal NormalCB, pDerivative DerivCB&gt;
                                       ^
/Functions.h:207:57: error: ‘pDerivative’ is not a type
 template &lt;class Type, pLearn LearnCB, pNormal NormalCB, pDerivative DerivCB&gt;
</code></pre>