Why do templates specialisations need to be inlined? : <p>I am referring to this answer:</p>

<p><a href="https://stackoverflow.com/a/4447057/930315">https://stackoverflow.com/a/4447057/930315</a></p>

<p>I ran into a similar issue as the OP of the cited question,
having a function</p>

<pre><code>template&lt;typename T&gt;
void func(T&amp; val);
</code></pre>

<p>and its specialization</p>

<pre><code>template&lt;&gt;
void func&lt;mytype&gt;(mytype&amp; val);
</code></pre>

<p>resulted in a duplicate symbols linker error (the methods are implemented in a '.tpp' file that is included at the end of my header).
adding <code>inline</code> to the specialised function resolved the issue. Why?</p>
