What is the syntax to a templated recursive function? <p>This is driving me round the bend at the moment. As a homebrew exercise I wanted to template a recursive call in a class. in the .h file I have:</p> <pre><code>template &lt;typename T1&gt; class BinaryTree { public: BinaryTree(T1 element); ~BinaryTree(); BinaryTree* addLeftLeaf(BinaryTree&lt;T1&gt;* node); </code></pre> <p>etc...</p> <p>then in the .cpp</p> <pre><code>template &lt;typename T1&gt; BinaryTree* BinaryTree&lt;T1&gt;::addLeftLeaf(BinaryTree&lt;T1&gt;* node) { return node; } </code></pre> <p>I've tried seemingly loads of ideas but thus far nothing. Just errors like error C2955: 'BinaryTree' : use of class template requires template argument list</p> <p>Any suggestions would be kindly appreciated.</p> <p>Thanks</p> <p>Mark</p>