title: What is this kind of template mechanism called and how is it useful?
body: <p>This makes use of templates for a polymorphic function but when is there an opportunity to specify the <code>U</code> template type? I'm not understanding what exactly is going on.</p>
  
  <p>In addition to an explanation, I would like an answer which also includes an applicable use case.</p>
  
  <p>Here is the template example:</p>
  
  <pre><code>template&lt;typename T&gt;
  class some_class
  {
  public:
     some_class(const some_class&lt;T&gt;&amp; other) {
     }
  
     template&lt;typename U&gt;
     some_class(const some_class&lt;U&gt;&amp; other) {
     }
  };
  </code></pre>