title: Templates external linkage does't work
body: <p>Standard says that template names have <a href="http://en.cppreference.com/w/cpp/language/storage_duration" rel="nofollow noreferrer">external linkage</a>. </p>
  
  <p>My question is: "<strong>Why isn't there a linker error when I declare the same templates in two .cpp files and compile this files together?</strong>"</p>
  
  <p>Global functions names have external linkage like templates names. That's why I suggest that they should have similar behavior. But as for functions there is nothing strange and the linker produces an error, but as for templates somehow there is no error.</p>
  
  <p><strong>temp_1.cpp</strong></p>
  
  <pre><code>#include &lt;iostream&gt;
  
  // error because of external linkage
  // void eq_f(){}
  
  
  template&lt;class T&gt;
  void my_func() {
      std::cout &lt;&lt; "1!";
  }
  </code></pre>
  
  <p><strong>temp_2.cpp</strong></p>
  
  <pre><code>#include &lt;iostream&gt;
  
  // external linkage
  // void eq_f(){}
  
  template&lt;class T&gt;
  void my_func() {
      std::cout &lt;&lt; "2!";
  }
  
  int main() {
      my_func&lt;int&gt;();
      return 0;
  }
  </code></pre>
  
  <p><strong>command:</strong></p>
  
  <pre><code>clang++ temp_1.cpp temp_2.cpp -std=c++17
  </code></pre>