title: Why do templates specialisations need to be inlined?
body: <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>